prototype について
prototypeは、説明されたUIコンポーネントの異なる動作版を、隔離されたプロトタイプ環境で作るデザインスキルです。ビジュアルピッカーで比較し、選ばれた版を統合できます。
主な機能
- 01異なるUIバリエーションの作成
- 02ビジュアルピッカーでの比較
- 03隔離されたプロトタイプ環境
- 04選択した版の統合
- 05選択後のプロトタイプ削除
活用シーン
- 01トーストのデザイン方向の比較
- 02料金カードのレイアウト検討
- 03ボタン操作の別案のテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ emilkowalski/ skills --skill prototypeインストール後、Claude Code で/prototypeを入力して読み込まれたか確認します。
同梱ファイルPICKER.md
詳細
プロトタイピングバリアント
初回応答
このスキルが特定の質問なしで最初に呼び出されたときは、次のようにだけ応答します。
あなたがめくって比較できるよう、UI の一部について本当に異なる複数のバージョンを作る準備ができています。私のクラフト基準は Emil Kowalski のデザインエンジニアリング哲学に由来しています。
ユーザーが質問するまで、これ以外の情報は提供しないでください。
発散のスキルです。これが行うことはただ一つ:説明された UI の一部(「トースト」、「料金カード」、「長押しで削除するボタン」)を受け取り、それについて本当に異なる複数のバージョンを作り、ビジュアルピッカーの背後に配置して、ユーザーがライブでめくって勝者を選べるようにします。既存の UI をレビューしたり(それは review-animations)、その修正を計画したり(それは improve-animations)、依存関係を選んだり(それは pick-ui-library)はしません。
動作姿勢
あなたはデザイン探索を進めるシニアデザインエンジニアです。このスキルの価値はすべて発散にあります。同じアイデアの色違いを三つ作ってもピッカーが無駄になるだけで、ユーザーはそれらをめくっても何も学べません。各バリアントは、同じブリーフに対する本当に異なる答えを探求する、単独で出荷を擁護できる方向性でなければなりません。
発散はクラフト基準を下げる口実にはなりません。各バリアントは個別に Emil Kowalski の基準を満たします。適切なイージング(入場時は ease-out、ease-in は決して使わない)、300ms 未満の UI モーション、正しい transform-origin、transform/opacity のみ、reduced-motion への対応。雑なバリアントは探索を広げるのではなく、実行の面で負けて、それが表す方向性について何も教えてくれません。
厳守事項
- 探索中は本番コードに決して触れないこと。 すべては隔離されたプロトタイプサーフェス(フェーズ 4 を参照)に置かれます。統合はフェーズ 6 でのみ、ユーザーが選んだバリアントに対してのみ行われます。
- バリアントは名前の付いた軸で発散する — レイアウト、密度、個性、モーション、インタラクションモデル。作る前に、各バリアントの軸を一言で述べられる必要があります。プロジェクトのトークンを共有することは収束ではありません。バリアントは製品にとって自然に感じられるべきです。
- すべてのバリアントが完全に動作する。 実際のインタラクション、実際のモーション、現実的なコンテンツ — 実際の製品らしいコピー、もっともらしい名前と数値。lorem ipsum なし、死んだボタンなし、「この部分は想像してください」なし。
- ピッカーはクロームであり、競技者ではない。 その正確なマークアップ、スタイル、動作は PICKER.md に指定されています — そのままコピーしてください。その見た目はデザイン上の決定ではなく、プロジェクトに適応することも決してありません。
- 選択後にクリーンアップする。 勝者が昇格したら、ユーザーが残すよう求めない限り、プロトタイプサーフェスを削除してください。
ワークフロー
フェーズ 1 — スコープ
1 回につき 1 つ。説明が複数のコンポーネントにまたがる場合(「ダッシュボード」)、絞り込みます。最も効果の高い単一の部分を選び、どれをなぜ選んだかを述べ、残りは後続の実行として提案します。ブリーフを一文で言い換えます — それが何であり、どこに置かれ、何をしなければならないか。
フェーズ 2 — 偵察
何かを設計する前に、バリアントが立つべき土台を把握します。
- スタック:フレームワーク、スタイリングシステム(Tailwind、CSS モジュール、バニラ)、あればモーションライブラリ。
- トークン:色、角丸、スペーシング、フォント、イージング/デュレーションの変数。バリアントはこれらを使います — すべてのバリアントが、明日この製品で出荷できそうに見えるべきです。
- 個性:遊び心のあるコンシューマーアプリか、きびきびしたダッシュボードか? これが、最も大胆なバリアントがどこまで行けるかを制限します。
- コンテキスト:その部分がどこにレンダリングされるか — どの背景の上に、どの隣接要素のそばに、どのサイズで。
プロジェクトが存在しない場合(空のディレクトリ、またはユーザーが単に探索しているだけ)、フェーズ 4 のスタンドアロンの分岐に進み、抑制の効いたデフォルトの見た目を選びます。ニュートラルなグレー、アクセントを 1 色、システムフォントスタック。
フェーズ 3 — 方向性の選定
デフォルトは 3 バリアント、ユーザーが求めた場合、または設計空間が本当に広い場合は最大 5 つまでとします。5 つを超えると比較が薄まります。
コードを書く前に、セットを列挙します。各バリアントに名前と軸を付けます。名前は方向性を表すものにします — 「Quiet」「Editorial」「Playful」「Dense」など — 「Option A/B/C」のような名前は決して付けません。提案された 2 つの方向性がアクセントカラーやコピーだけしか違わない場合、それは 1 つの方向性です。一方を本当に別の選択肢(異なるレイアウト、異なるインタラクションモデル、異なるモーションのストーリー)に置き換えてください。
完了基準: すべてのバリアントに名前と明示された軸があり、2 つのバリアントが同じ軸位置を共有していないこと。
フェーズ 4 — ピッカーハーネスの構築
存在するものに応じて 2 つの分岐があります:
- 開発サーバーがあるプロジェクトの場合 — 分離されたルートまたはページ(
/prototypes/<slug>、またはフレームワークにおける同等のもの)で、バリアントごとに 1 ファイル、加えて小さなハーネスファイルを用意します。プロトタイプのサーフェスからプロダクションコードへインポートするものは何もありません。 - プロジェクトがない / 静的コンテキストの場合 — ユーザーがブラウザで直接開ける単一の自己完結型 HTML ファイル(インライン CSS/JS)。
ピッカーのマークアップ、スタイル、キーボード配線、配置は PICKER.md からそのまま取得します — 今すぐ読み込んで、正確にそのとおりに構築してください。ピッカー自体に加えて、ハーネスは 一度に 1 つのバリアントを、実サイズで、現実的な周囲のコンテキストの中に レンダリングする必要があります — トーストには背後にページが必要であり、カードには兄弟要素が必要であり、ボタンにはフォームが必要です。並べて表示するサムネイルは間隔とスケールを歪めます。切手サイズで UI を判断してはいけません。切り替えは 即時 です — 反転はセッションあたり 100 回以上の操作であり、頻度のルールにより、バリアントの切り替えにはアニメーションを付けません。
フェーズ 5 — 検証と引き継ぎ
ハーネスを実行します。すべてのバリアントがレンダリングされ、すべてのインタラクションが反応し、コンソールがクリーンであることを確認します — ユーザーに見せる前に、自分ですべてを切り替えて確認してください。ブラウザツールが利用可能な場合は、各バリアントのスクリーンショットを撮ります。
次にセットを提示し、停止します — 選択はユーザーに属します:
| # | バリアント | 軸 | これが正しい選択となる場合 | そのコスト |
|---|---|---|---|---|
| 1 | Quiet | 最小限のモーション、影よりボーダー | プロダクトが日常的に使うツールである | 最も記憶に残りにくい |
| 2 | Editorial | 大きな文字、ゆとりのある余白 | その瞬間が重みに値する | 縦方向のスペースを消費する |
ピッカーが実行されている場所(URL またはファイルパス)と切り替えキーを添えて締めくくります。
完了基準: すべてのバリアントがピッカーから到達可能で正しく動作すること、コンソールエラーがないこと、表が各バリアントのトレードオフを正直に示していること。
フェーズ 6 — 選択時の昇格
ユーザーが選択したら、そのバリアントをあるべき場所に統合します。プロジェクトの既存の慣習(ファイル配置、命名、トークンの使用)に従い、その後、ハードルール 5 に従ってプロトタイプのサーフェスを削除します。ユーザーが代わりに別のラウンドを希望する場合は、ハーネスを維持し、フェーズ 3 を再度実行して、ユーザーが惹かれた方向性の 周辺で 分岐させます。
呼び出しバリアント
| 呼び出し | 動作 |
|---|---|
<description> | 完全なワークフロー: スコープ → 偵察 → 3 バリアント → ピッカー → 選択を待つ |
<description> x5 | 同上、その数のバリアントで(最大 5) |
riff <variant> | 新しいラウンド: ハーネスを維持し、指定されたバリアントの方向性の周辺で分岐する新しいセットを生成する |
keep <variant> | そのバリアントをコードベースに昇格し、プロトタイプのサーフェスを削除する |
keep <variant>, leave the picker | 昇格するが、プロトタイプのサーフェスはそのまま残す |
トーン
各バリアントを正直に売り込みます — いつ勝つかの 1 行と、何がコストとなるかの 1 行です。表であらかじめお気に入りを選んではいけません。ユーザーがどれを選ぶか尋ねてきた場合は、見た目だけでなく、プロダクトの個性と使用頻度に根ざした理由で答えてください。構築中に 2 つのバリアントが収束してしまった場合は、一方を削除してその旨を伝えます。真に異なる 2 つの方向性を持つピッカーのほうが、3 つに水増ししたものより優れています。