Install any skill in seconds. Free to start, no credit card required.
Get Started Free →LP/HP作成ワークフロー。ヒアリング→訴求整理→WF→Pencilデザイン→HTML実装→Vercelデプロイの全フローをガイド。 「LPを作って」「ランディングページ作成」「HPデザイン」「Webページ制作」等のリクエストで発動。
.claude/skills/minicoohei-lp-designer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 222% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 204% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 258% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 312% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 176% | 0% |
LP(ランディングページ)/ HP(ホームページ)をゼロから制作するための統合ワークフロースキル。 AskQuestionToolによるヒアリングからVercelデプロイまで、6つのフェーズで完結する。
Phase 1: ヒアリング(AskQuestion)
↓ サービス概要・ターゲット・訴求軸
Phase 2: 訴求整理
↓ ペルソナ・ベネフィット・コピー
Phase 3: WF作成
↓ ASCII WF + ビジュアルWF
Phase 4: Pencilデザイン
↓ .pen デザインファイル
Phase 5: コード実装
↓ HTML/CSS(Tailwind)/JS
Phase 6: Vercelデプロイ
↓ 公開URL最初にAskQuestionToolを使って、制作するLP/HPの要件を構造的に収集する。
json{ "title": "LP/HP制作ヒアリング", "questions": [{ "id": "project_type", "prompt": "どのタイプのページを作成しますか?", "options": [ {"id": "lp", "label": "LP(ランディングページ)- 1つのCTAに集中"}, {"id": "hp", "label": "HP(ホームページ)- 複数セクション・ナビ付き"}, {"id": "product", "label": "プロダクトページ - 機能紹介中心"}, {"id": "event", "label": "イベント/キャンペーンページ"} ] }] }
json{ "title": "サービス情報", "questions": [ { "id": "service_category", "prompt": "サービスのカテゴリを選んでください", "options": [ {"id": "saas", "label": "SaaS / Webサービス"}, {"id": "ec", "label": "ECサイト / 物販"}, {"id": "consulting", "label": "コンサルティング / 士業"}, {"id": "education", "label": "教育 / スクール"}, {"id": "event", "label": "イベント / セミナー"}, {"id": "portfolio", "label": "ポートフォリオ / 個人"}, {"id": "other", "label": "その他"} ] }, { "id": "design_tone", "prompt": "デザインのトーンを選んでください", "options": [ {"id": "professional", "label": "プロフェッショナル・信頼感"}, {"id": "modern", "label": "モダン・スタイリッシュ"}, {"id": "playful", "label": "ポップ・親しみやすい"}, {"id": "luxury", "label": "高級感・エレガント"}, {"id": "minimal", "label": "ミニマル・シンプル"}, {"id": "tech", "label": "テック・先進的"} ] } ] }
AskQuestion の後、以下を自由入力で確認する:
Phase 1 のヒアリング結果をもとに、以下のドキュメントを生成する。
output/lp-brief.mdmarkdown# LP ブリーフ ## ペルソナ - 名前: {例: 田中太郎} - 年齢: {例: 35歳} - 職種: {例: マーケティングマネージャー} - 課題: {例: LP制作に時間がかかりすぎる} ## 訴求軸(ベネフィット3点) 1. {メインベネフィット} 2. {サブベネフィット1} 3. {サブベネフィット2} ## コピー - ヘッドライン: {例: AIで、LP制作を10倍速く} - サブヘッドライン: {例: ヒアリングからデプロイまで、すべてをAIがサポート} - CTA文言: {例: 無料で始める} ## セクション構成 1. Hero(ヘッドライン + CTA) 2. Pain Points(課題提起) 3. Solution(ソリューション紹介) 4. Features(機能 / 特徴 3-4点) 5. Social Proof(実績 / お客様の声) 6. Pricing / Plan(料金・プラン)※オプション 7. FAQ(よくある質問) 8. Final CTA(最終アクション)
テキストベースで各セクションの構造を設計する:
┌─────────────────────────────────┐
│ HEADER / NAV │
├─────────────────────────────────┤
│ │
│ [Hero Image / Video] │
│ │
│ ヘッドライン(H1) │
│ サブヘッドライン │
│ [ CTA ボタン ] │
│ │
├─────────────────────────────────┤
│ Pain Points セクション │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │課題1│ │課題2│ │課題3│ │
│ └─────┘ └─────┘ └─────┘ │
├─────────────────────────────────┤
│ Solution セクション │
│ [画像] 説明テキスト │
├─────────────────────────────────┤
│ Features セクション │
│ ┌──────┐ ┌──────┐ │
│ │機能1 │ │機能2 │ │
│ └──────┘ └──────┘ │
│ ┌──────┐ ┌──────┐ │
│ │機能3 │ │機能4 │ │
│ └──────┘ └──────┘ │
├─────────────────────────────────┤
│ Social Proof │
│ ★★★★★ お客様の声 │
├─────────────────────────────────┤
│ FAQ │
│ Q1 / A1 │
│ Q2 / A2 │
├─────────────────────────────────┤
│ Final CTA │
│ [ CTA ボタン ] │
├─────────────────────────────────┤
│ FOOTER │
└─────────────────────────────────┘diagram-generator を使ってビジュアルワイヤーフレームを生成:
bashuv run python tools/generate_diagram.py --topic "LP wireframe: {セクション構成}" --style minimalist
出力先: output/images/lp-wireframe.png
Pencil MCP を使って .pen デザインファイルを作成する。 .pen ファイルは暗号化されているため、Read/Grep ではなく必ず Pencil MCP ツールを使うこと。
まず現在のエディター状態を確認する。ファイルが開いていなければ新規作成する。
# 1) エディター状態を確認
CallMcpTool: user-pencil / get_editor_state
arguments: {}
# → ファイルが開いていない場合エラーが返る
# → 既にファイルが開いている場合はノード一覧が返る
# 2-A) 新規ドキュメントを作成する場合
CallMcpTool: user-pencil / open_document
arguments: { "filePathOrTemplate": "new" }
# 2-B) 既存の .pen ファイルを開く場合
CallMcpTool: user-pencil / open_document
arguments: { "filePathOrTemplate": "path/to/design.pen" }
# 3) 開いた後、再度 get_editor_state でノード構造を確認
CallMcpTool: user-pencil / get_editor_state
arguments: {}重要: open_document は Pencil アプリ内で対象ファイルを開く操作。 Cursor の MCP 設定で user-pencil が有効になっている必要がある。
LP 特化のデザインルール(セクション構成、ヒーロー設計、フッター設計等)を取得する:
CallMcpTool: user-pencil / get_guidelines
arguments: { "topic": "landing-page" }このガイドラインには以下が含まれる:
デザインのトーンに合ったスタイルガイドを取得する:
# 1) 使えるタグ一覧を確認
CallMcpTool: user-pencil / get_style_guide_tags
arguments: {}
# → minimal, modern, clean, warm, tech, brutalist 等のタグが返る
# 2) ヒアリング結果のトーンに合うタグを選択して取得
CallMcpTool: user-pencil / get_style_guide
arguments: { "tags": ["minimal", "clean", "whitespace", "website"] }スタイルガイドには以下が含まれる:
LP全体を包むフレームを batch_design で作成する:
# batch_design の operations はスクリプト形式で記述
CallMcpTool: user-pencil / batch_design
arguments: {
"operations": "page=I(document, {type: \"frame\", name: \"Landing Page\", placeholder: true, layout: \"vertical\", width: 1440, height: \"fit_content(4000)\", fill: \"#FFFFFF\", clip: true})"
}batch_design 操作の基本構文:
| 操作 | 構文 | 説明 | |------|------|------| | Insert | foo=I("parentId", {...}) | 親ノードに子を挿入 | | Copy | bar=C("nodeId", "parentId", {...}) | ノードをコピー | | Update | U("nodeId", {...}) | プロパティ更新 | | Replace | R("nodeId", {...}) | ノードを置換 | | Delete | D("nodeId") | ノード削除 | | Move | M("nodeId", "parentId", index) | ノード移動 | | Image | G("nodeId", "ai", "prompt") | AI画像生成 |
重要ルール:
placeholder: true を作業中のフレームに必ず設定し、完了時に false にするfill を設定する(デフォルトは透明で見えない)x, y は無視される(fill_container / fit_content を使う)G() で画像を適用するbatch_design を使い、以下のセクションを1〜2セクションずつ作成する:
space_between)各セクションの作成例(Hero):
CallMcpTool: user-pencil / batch_design
arguments: {
"operations": "hero=I(\"pageId\", {type: \"frame\", name: \"Hero\", layout: \"vertical\", width: \"fill_container\", height: \"fit_content(600)\", padding: [100, 120], gap: 32, alignItems: \"center\", fill: \"#FFFFFF\"})\nheadline=I(hero, {type: \"text\", content: \"メインコピー\", fontFamily: \"Outfit\", fontSize: 56, fontWeight: \"700\", fill: \"#1A1918\", letterSpacing: -1, textAlign: \"center\", lineHeight: 1.2, textGrowth: \"fixed-width\", width: 800})\nsubline=I(hero, {type: \"text\", content: \"サブコピーの説明文\", fontFamily: \"Outfit\", fontSize: 18, fill: \"#6D6C6A\", textAlign: \"center\"})"
}各セクション追加後にスクリーンショットで視覚確認する:
# ページ全体を確認
CallMcpTool: user-pencil / get_screenshot
arguments: { "nodeId": "pageId" }
# 特定セクションを拡大確認
CallMcpTool: user-pencil / get_screenshot
arguments: { "nodeId": "heroId" }
# レイアウト構造を数値で確認(位置ズレの検出に有効)
CallMcpTool: user-pencil / snapshot_layout
arguments: { "parentId": "pageId", "maxDepth": 3 }問題があれば batch_design の U() で修正する。 すべてのセクションが完成したら、placeholder を解除する:
CallMcpTool: user-pencil / batch_design
arguments: { "operations": "U(\"pageId\", {placeholder: false})" }Pencilデザインを実際に動くHTML/CSS/JSに変換する。
CallMcpTool: user-pencil / get_guidelines
arguments: { "topic": "code" }
CallMcpTool: user-pencil / get_guidelines
arguments: { "topic": "tailwind" }lp-project/
├── index.html # メインHTML
├── css/
│ └── style.css # カスタムCSS(Tailwind CDN使用)
├── js/
│ └── main.js # インタラクション
├── images/ # 画像アセット
└── package.json # Vercelデプロイ用<script src="https://cdn.tailwindcss.com"></script> で即座に利用cursor-ide-browser MCP を使って表示確認:
CallMcpTool: cursor-ide-browser / browser_navigate
arguments: { "url": "file:///path/to/lp-project/index.html" }bashnpm i -g vercel
bashvercel lp-project
初回はログイン・プロジェクト設定が求められる。
bashvercel --prod
bashvercel domains add your-domain.com
このスキルは3つのレベルで活用できる:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | pass→pass | 12,519 | 9,905 | -21% | 1 | 1 | 0% | 2,350 | 5,901 | +151% | 0 | 0 | — |
case-01 | fail→fail | 11,143 | 5,465 | -51% | 1 | 1 | 0% | 1,848 | 4,634 | +151% | 0 | 0 | — |
case-02 | fail→fail | 9,499 | 2,712 | -71% | 1 | 1 | 0% | 1,489 | 4,468 | +200% | 0 | 0 | — |
case-03 | fail→fail | 9,101 | 2,353 | -74% | 1 | 1 | 0% | 1,435 | 4,467 | +211% | 0 | 0 | — |
case-04 | fail→fail | 14,208 | 3,678 | -74% | 1 | 1 | 0% | 2,513 | 4,798 | +91% | 0 | 0 | — |
case-05 | fail→pass | 9,004 | 2,212 | -75% | 1 | 1 | 0% | 1,406 | 4,529 | +222% | 0 | 0 | — |
case-06 | fail→pass | 9,252 | 3,139 | -66% | 1 | 1 | 0% | 1,555 | 4,727 | +204% | 0 | 0 | — |
case-07 | fail→fail | 8,975 | 2,722 | -70% | 1 | 1 | 0% | 1,478 | 4,537 | +207% | 0 | 0 | — |
case-08 | fail→pass | 7,602 | 3,953 | -48% | 1 | 1 | 0% | 1,315 | 4,712 | +258% | 0 | 0 | — |
case-09 | fail→fail | 11,860 | 2,344 | -80% | 1 | 1 | 0% | 1,941 | 4,478 | +131% | 0 | 0 | — |
case-10 | pass→pass | 3,672 | 2,206 | -40% | 1 | 1 | 0% | 594 | 4,476 | +654% | 0 | 0 | — |
case-11 | fail→pass | 7,239 | 2,502 | -65% | 1 | 1 | 0% | 1,098 | 4,521 | +312% | 0 | 0 | — |
case-12 | fail→pass | 10,438 | 5,439 | -48% | 1 | 1 | 0% | 1,839 | 5,069 | +176% | 0 | 0 | — |
case-13 | fail→pass | 9,444 | 1,843 | -80% | 1 | 1 | 0% | 1,519 | 4,449 | +193% | 0 | 0 | — |
case-14 | pass→pass | 6,023 | 5,931 | -2% | 1 | 1 | 0% | 1,121 | 5,126 | +357% | 0 | 0 | — |
case-15 | fail→fail | 12,543 | 2,926 | -77% | 1 | 1 | 0% | 2,032 | 4,602 | +126% | 0 | 0 | — |
case-16 | fail→pass | 8,313 | 3,041 | -63% | 1 | 1 | 0% | 1,375 | 4,670 | +240% | 0 | 0 | — |
case-17 | pass→pass | 2,562 | 1,548 | -40% | 1 | 1 | 0% | 296 | 4,298 | +1352% | 0 | 0 | — |
case-18 | pass→pass | 3,953 | 2,706 | -32% | 1 | 1 | 0% | 687 | 4,520 | +558% | 0 | 0 | — |
case-20 | pass→pass | 21,499 | 16,544 | -23% | 1 | 1 | 0% | 3,715 | 6,930 | +87% | 0 | 0 | — |
case-21 | pass→pass | 10,873 | 8,729 | -20% | 1 | 1 | 0% | 2,283 | 5,996 | +163% | 0 | 0 | — |
case-22 | pass→pass | 4,710 | 6,086 | +29% | 1 | 1 | 0% | 868 | 5,244 | +504% | 0 | 0 | — |
case-23 | pass→pass | 4,892 | 3,493 | -29% | 1 | 1 | 0% | 717 | 4,660 | +550% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +30 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.