Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

penpot-uiux-design

MCP toolsを使用してPenpotでプロフェッショナルなUI/UXデザインを作成するための包括的なガイドです。Webやモバイル・デスクトップアプリのUI/UX新規作成、コンポーネントやトークンを用いたデザインシステムの構築、ダッシュボード・フォーム・ナビゲーション・ランディングページのデザイン、アクセシビリティ基準やiOS・Android・Material Designなどのプラットフォームガイドラインへの準拠、既存Penpotデザインのユーザビリティ改善など、幅広いデザイン作業で活用できます。

description の原文を見る

Comprehensive guide for creating professional UI/UX designs in Penpot using MCP tools. Use this skill when: (1) Creating new UI/UX designs for web, mobile, or desktop applications, (2) Building design systems with components and tokens, (3) Designing dashboards, forms, navigation, or landing pages, (4) Applying accessibility standards and best practices, (5) Following platform guidelines (iOS, Android, Material Design), (6) Reviewing or improving existing Penpot designs for usability. Triggers: "design a UI", "create interface", "build layout", "design dashboard", "create form", "design landing page", "make it accessible", "design system", "component library".

SKILL.md 本文

Penpot UI/UX デザインガイド

penpot/penpot-mcp MCP サーバーと実証済みの UI/UX 原則を使用して、Penpot で専門的なユーザー中心のデザインを作成します。

利用可能な MCP ツール

ツール目的
mcp__penpot__execute_codePenpot プラグインコンテキストで JavaScript を実行して、デザインを作成/変更する
mcp__penpot__export_shapeシェイプを PNG/SVG としてエクスポートして視覚的に検査する
mcp__penpot__import_image画像 (アイコン、写真、ロゴ) をデザインにインポートする
mcp__penpot__penpot_api_infoPenpot API ドキュメントを取得する

MCP サーバーセットアップ

Penpot MCP ツールは、ローカルで実行されている penpot/penpot-mcp サーバーが必要です。詳細なインストールとトラブルシューティングについては、setup-troubleshooting.md を参照してください。

セットアップ前: 既に実行中かどうかを確認

セットアップを試みる前に、MCP サーバーが既に利用可能かどうかを必ず確認してください:

  1. まずツールを呼び出してみる: mcp__penpot__penpot_api_info の呼び出しを試みる - 成功すれば、サーバーは実行中で接続されています。セットアップは不要です。

  2. ツールが失敗した場合、ユーザーに以下のように質問してください:

    「Penpot MCP サーバーが接続されていないようです。サーバーは既にインストールされており、実行中ですか? そうであれば、トラブルシューティングをお手伝いできます。インストールされていない場合は、セットアップ方法をご説明します。」

  3. ユーザーがサーバーがインストールされていないことを確認した場合にのみ、セットアップ手順に進みます。

クイックスタート (インストール済みでない場合のみ)

# クローンとインストール
git clone https://github.com/penpot/penpot-mcp.git
cd penpot-mcp
npm install

# サーバーのビルドと起動
npm run bootstrap

その後 Penpot で:

  1. デザインファイルを開く
  2. プラグインURL からプラグインを読み込む に進む
  3. 以下を入力: http://localhost:4400/manifest.json
  4. プラグイン UI で 「MCP サーバーに接続」 をクリック

VS Code 設定

settings.json に以下を追加:

{
  "mcp": {
    "servers": {
      "penpot": {
        "url": "http://localhost:4401/sse"
      }
    }
  }
}

トラブルシューティング (サーバーはインストール済みだが動作していない場合)

問題解決策
プラグインが接続しないサーバーが実行中か確認 (penpot-mcp ディレクトリで npm run start:all を実行)
ブラウザがローカルホストをブロックローカルネットワークアクセスプロンプトを許可するか、Brave Shield を無効にするか、Firefox を試す
クライアントにツールが表示されない設定変更後に VS Code/Claude を完全に再起動
ツールの実行に失敗/タイムアウトPenpot プラグイン UI が開いており「接続中」と表示されていることを確認
「WebSocket 接続に失敗しました」ファイアウォールがポート 4400、4401、4402 を許可していることを確認

クイックリファレンス

タスクリファレンスファイル
MCP サーバーのインストール & トラブルシューティングsetup-troubleshooting.md
コンポーネント仕様 (ボタン、フォーム、ナビゲーション)component-patterns.md
アクセシビリティ (コントラスト、タッチターゲット)accessibility.md
画面サイズ & プラットフォーム仕様platform-guidelines.md

コアデザイン原則

ゴールデンルール

  1. 明確さは奇抜さに勝る: すべての要素に目的がなければならない
  2. 一貫性は信頼を築く: パターン、色、コンポーネントを再利用する
  3. ユーザー目標を最優先: 機能ではなくタスクのためにデザインする
  4. アクセシビリティはオプションではない: すべてのユーザーのためにデザインする
  5. 実際のユーザーでテストする: 仮説を早期に検証する

ビジュアルハイアラルキー (優先度順)

  1. サイズ: 大きい = より重要
  2. 色/コントラスト: 高コントラストが注意を引く
  3. 位置: 左上 (LTR) が最初に目に入る
  4. 余白: 分離が重要性を強調する
  5. タイポグラフィウェイト: 太字が目立つ

デザインワークフロー

  1. デザインシステムを最初に確認: ユーザーに既存のトークン/仕様があるかどうかを尋ねるか、現在の Penpot ファイルから検出する
  2. ページを理解する: mcp__penpot__execute_codepenpotUtils.shapeStructure() で呼び出してハイアラルキーを確認する
  3. 要素を検出: penpotUtils.findShapes() を使用して、タイプまたは名前で要素を検出する
  4. 作成/変更: penpot.createBoard()penpot.createRectangle()penpot.createText() などを使用する
  5. レイアウトを適用: レスポンシブコンテナには addFlexLayout() を使用する
  6. 検証: mcp__penpot__export_shape を呼び出して、作業を視覚的に確認する

デザインシステムの処理

デザインを作成する前に、ユーザーが既存のデザインシステムを持っているかどうかを判断します:

  1. ユーザーに尋ねる: 「従うべきデザインシステムまたはブランドガイドラインはありますか?」
  2. Penpot から検出: 既存のコンポーネント、色、パターンをチェック
// 現在のファイル内の既存のデザインパターンを検出
const allShapes = penpotUtils.findShapes(() => true, penpot.root);

// 使用中の既存色を検出
const colors = new Set();
allShapes.forEach(s => {
  if (s.fills) s.fills.forEach(f => colors.add(f.fillColor));
});

// 既存のテキストスタイル (フォントサイズ、ウェイト) を検出
const textStyles = allShapes
  .filter(s => s.type === 'text')
  .map(s => ({ fontSize: s.fontSize, fontWeight: s.fontWeight }));

// 既存のコンポーネントを検出
const components = penpot.library.local.components;

return { colors: [...colors], textStyles, componentCount: components.length };

ユーザーがデザインシステムを持っている場合:

  • 指定された色、間隔、タイポグラフィを使用する
  • 既存のコンポーネントパターンと合わせる
  • 命名規則に従う

ユーザーがデザインシステムを持っていない場合:

  • 以下のデフォルトトークンを出発点として使用する
  • 一貫したパターンの確立を支援することを提案する
  • component-patterns.md の仕様を参照

Penpot API の重要な落とし穴

  • width/height は READ-ONLY → shape.resize(w, h) を使用
  • parentX/parentY は READ-ONLY → penpotUtils.setParentXY(shape, x, y) を使用
  • z オーダーには insertChild(index, shape) を使用 (appendChild ではない)
  • dir="column" または dir="row" の場合、Flex 子要素配列の順序は逆
  • text.resize() 後、growType"auto-width" または "auto-height" にリセット

新しいボードの配置

重なりを避けるため、新しいボードを作成する前に必ず既存のボードをチェック:

// すべての既存ボードを検出し、次の位置を計算
const boards = penpotUtils.findShapes(s => s.type === 'board', penpot.root);
let nextX = 0;
const gap = 100; // ボード間のスペース

if (boards.length > 0) {
  // 最も右のボードエッジを検出
  boards.forEach(b => {
    const rightEdge = b.x + b.width;
    if (rightEdge + gap > nextX) {
      nextX = rightEdge + gap;
    }
  });
}

// 計算された位置に新しいボードを作成
const newBoard = penpot.createBoard();
newBoard.x = nextX;
newBoard.y = 0;
newBoard.resize(375, 812);

ボード間隔ガイドライン:

  • 関連する画面間 (同じフロー) で 100px のギャップを使用
  • 異なるセクション/フロー間で 200px 以上のギャップを使用
  • ボードを縦方向に揃える (同じ y) で視覚的に整理
  • 関連する画面をユーザーフロー順に水平方向にグループ化

デフォルトデザイントークン

ユーザーがデザインシステムを持っていない場合のみこれらのデフォルトを使用します。利用可能な場合は常にユーザーのトークンを優先します。

間隔スケール (8px ベース)

トークン用途
spacing-xs4px密集したインライン要素
spacing-sm8px関連要素
spacing-md16pxデフォルトパディング
spacing-lg24pxセクション間隔
spacing-xl32pxメジャーセクション
spacing-2xl48pxページレベルの間隔

タイポグラフィスケール

レベルサイズウェイト用途
Display48-64pxBoldヒーロー見出し
H132-40pxBoldページタイトル
H224-28pxSemiboldセクションヘッダー
H320-22pxSemiboldサブセクション
Body16pxRegularメインコンテンツ
Small14pxRegularセカンダリテキスト
Caption12pxRegularラベル、ヒント

色の使用

目的推奨
Primaryメインブランドカラー、CTA
Secondaryサポート操作
Success#22C55E 範囲 (確認)
Warning#F59E0B 範囲 (注意)
Error#EF4444 範囲 (エラー)
Neutralテキスト/ボーダーのグレースケール

一般的なレイアウト

モバイル画面 (375×812)

┌─────────────────────────────┐
│ ステータスバー (44px)           │
├─────────────────────────────┤
│ ヘッダー/ナビ (56px)           │
├─────────────────────────────┤
│                             │
│ コンテンツエリア                │
│ (スクロール可能)                 │
│ パディング: 水平方向 16px    │
│                             │
├─────────────────────────────┤
│ ボトムナビ/CTA (84px)       │
└─────────────────────────────┘

デスクトップダッシュボード (1440×900)

┌──────┬──────────────────────────────────┐
│      │ ヘッダー (64px)                    │
│ サイド │──────────────────────────────────│
│ バー  │ ページタイトル + アクション             │
│      │──────────────────────────────────│
│ 240  │ コンテンツグリッド                     │
│ px   │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│      │ │カード │ │カード │ │カード │ │カード │ │
│      │ └─────┘ └─────┘ └─────┘ └─────┘ │
│      │                                  │
└──────┴──────────────────────────────────┘

コンポーネントチェックリスト

ボタン

  • 明確で、アクション指向のラベル (2-3 語)
  • 最小タッチターゲット: 44×44px
  • ビジュアル状態: デフォルト、ホバー、アクティブ、無効、読み込み中
  • 十分なコントラスト (背景に対して 3:1)
  • アプリ全体で一貫した角の丸さ

フォーム

  • ラベルは入力の上 (プレースホルダーだけではない)
  • 必須フィールド指標
  • フィールドに隣接するエラーメッセージ
  • 論理的なタブ順序
  • 入力タイプはコンテンツに一致 (メール、電話など)

ナビゲーション

  • 現在地が明確に示されている
  • スクリーン全体で一貫した位置
  • 最大 7±2 のトップレベルアイテム
  • モバイルでタッチしやすい (48px ターゲット)

アクセシビリティのクイックチェック

  1. 色コントラスト: テキスト 4.5:1、大きなテキスト 3:1
  2. タッチターゲット: 最小 44×44px
  3. フォーカス状態: 目に見えるキーボードフォーカスインジケーター
  4. Alt テキスト: 画像の意味のある説明
  5. ハイアラルキー: 適切な見出しレベル (H1→H2→H3)
  6. 色への依存なし: 色だけに頼らない

デザインレビューチェックリスト

デザインを最終確定する前に:

  • ビジュアルハイアラルキーが明確
  • 一貫した間隔と配置
  • タイポグラフィが読みやすい (本文テキスト 16px 以上)
  • 色コントラストが WCAG AA を満たしている
  • インタラクティブ要素が明白
  • モバイルフレンドリーなタッチターゲット
  • 読み込み/空/エラー状態を考慮
  • デザインシステムと一貫している

デザインの検証

mcp__penpot__execute_code を使用してこれらの検証アプローチを使用:

チェック方法
境界外の要素penpotUtils.analyzeDescendants()isContainedIn()
テキストが小さすぎる (<12px)penpotUtils.findShapes()fontSize でフィルタ
コントラストの不足mcp__penpot__export_shape を呼び出して視覚的に検査
ハイアラルキー構造penpotUtils.shapeStructure() でネストをレビュー

CSS のエクスポート

mcp__penpot__execute_code 経由で penpot.generateStyle(selection, { type: 'css', includeChildren: true }) を使用してデザインから CSS を抽出します。

優れたデザインのコツ

  1. コンテンツから始める: 実際のコンテンツはレイアウトニーズを明かす
  2. モバイルファーストでデザイン: 制約は創造性を生む
  3. グリッドを使用: 8px ベースグリッドで整列を保つ
  4. 色を制限: 1 つのプライマリ + 1 つのセカンダリ + ニュートラル
  5. フォントを制限: 最大 1-2 のタイプフェース
  6. 余白を活用: 呼吸スペースは理解を改善する
  7. 一貫性を保つ: 同じアクション = どこでも同じ外観
  8. フィードバックを提供: すべてのアクションには応答が必要

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
github
リポジトリ
github/awesome-copilot
ライセンス
MIT
最終更新
不明

Source: https://github.com/github/awesome-copilot / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: github · github/awesome-copilot · ライセンス: MIT