design-dna について
Design DNAは、参照からデザインの特徴を抽出し、新しいコンテンツに適用する3段階のスキルです。測定可能なトークン、定性的なスタイル、視覚効果を整理し、分析・生成・検証を支援します。
主な機能
- 013つの次元からなる設計スキーマ
- 02画像、スクリーンショット、URLの分析
- 03参照画像の色測定
- 04DNA JSONに基づくデザイン生成
- 05測定パレットの再現度検証
活用シーン
- 01参照デザインシステムの記録
- 02スクリーンショットから視覚スタイルを分析
- 03Design DNA JSONからページを構築
- 04生成色を測定結果と照合
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ zanwei/ design-dna --skill design-dnaインストール後、Claude Code で/design-dnaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreLICENSEREADME.mdREADME.ja.mdREADME.ko.mdREADME.zh-CN.mdREADME.zh-TW.mdREADME.es.mdreferences/generation-guide.mdschema.mdscripts/color-math.mjsmeasure-colors.mjspackage.jsonverify.mjsscripts/test/color-measurement.test.mjs詳細
Design DNA
3 つの次元にわたってデザインのアイデンティティを抽出、構造化、適用する 3 フェーズのワークフローです。
- デザインシステム — 測定可能なトークン(色、タイポグラフィ、間隔、レイアウト、形状、エレベーション、モーション、コンポーネント)
- デザインスタイル — 定性的な印象(ムード、ビジュアル言語、構成、画像、インタラクションの感触、ブランドの声)
- ビジュアルエフェクト — 特殊なレンダリング(Canvas、WebGL、3D、パーティクル、シェーダー、スクロールエフェクト、カーソルエフェクト、SVG アニメーション、グラスモーフィズムなど)
フェーズ
フェーズ 1:構造化 — スキーマを出力する
ユーザーが構造上の次元やスキーマを求めた場合:
- references/schema.md を読みます
- フィールドの説明を含め、スキーマ全体を提示します
- 3 つの次元とそれぞれの役割を説明します。
- design_system:測定できるもの — 正確な hex 値、ピクセルサイズ、rem スケール
- design_style:感じ取れるもの — ムード、個性、構成戦略
- visual_effects:見て取れるものの、CSS だけでは表現できないもの — WebGL シーン、パーティクルシステム、シェーダーによる歪み、スクロール駆動アニメーション
- 次元をカスタマイズまたは拡張するか、ユーザーに尋ねます
フェーズ 2:分析 — 参照から DNA を抽出する
ユーザーが目標とするデザインスタイルを表す画像、スクリーンショット、またはリンクを提供した場合:
- references/schema.md を読み、フィールドの一覧全体を確認します
- 提供された各参照について:
- 画像/スクリーンショットの場合:残りのビジュアルプロパティを直接分析する前に、まず決定論的な色測定を実行します(以下を参照)
- URL の場合:ページを取得し、ビジュアルデザインを分析します
- スキーマのすべてのフィールドについて、参照から値を抽出または推定します
- 複数の参照が一致しない場合は、優勢なパターンを記し、バリエーションにも触れます
- Design DNA の完全な JSON を出力します — 空文字列を使わず、すべてのフィールドに値を設定します
- 出力後、「生成に使用する前に、値を調整しますか?」と尋ねます
次元ごとの分析方法:
次元 1:design_system
- color:hex 値を目視で推定しないでください — 知覚される色は、なじみのあるパレットの既定値に寄りやすいためです(ΔE が 10 以上ずれることもよくあります)。参照が画像ファイルの場合は、代わりに測定してください。
SKILL_ROOTをこのSKILL.mdを含むディレクトリの絶対パスとして解決します。現在のプロジェクトディレクトリにスキルのscripts/フォルダーがあると決めつけないでください。参照と出力には絶対パスを使用し、参照ごとに一意の名前を付けた測定ファイルを 1 つずつ作成します。
測定した hex 値を DNA JSON にそのまま使用します。npm install --prefix "$SKILL_ROOT/scripts" --silent node "$SKILL_ROOT/scripts/measure-colors.mjs" "$REFERENCE_IMAGE" > "$MEASUREMENT_JSON"backgroundロールはsurface.backgroundに対応付けます。textは測定した背景とコントラストをなすneutral.scaleの端の値に対応付け、その前景色としての用途をneutral.usageに記録します。accentはaccent.hexに対応付けます。検証時に同じクラスタリング設定を再利用できるよう、測定したパレットとそのmeasurement設定の両方をdesign_system.color.measured_paletteとdesign_system.color.measurementに保持します。カバレッジ値は0から1までの小数です。測定が不可能な場合(スクリーンショットを取得できない URL のみの参照など)に限り、目視でのサンプリングに切り替えます。プライマリカラーとセカンダリカラーは意味上の役割に基づいて選び、CTA の強調にはアクセントを使います。テーマにかかわらず、ニュートラルスケールは明るい順に並べます。 - typography:視覚的な特徴(ジオメトリック、ヒューマニスト、セリフの分類)からフォントファミリーを特定します。見出しと本文のサイズの関係から、スケール比を推定します。
- spacing:要素同士の近さから密度を評価します。セクション間の間隔の一貫性からリズムを測定します。
- layout:コンテンツの配置パターンからグリッドを特定します。最大幅、列数、非対称性を記録します。
- shape:要素の高さと比較して角丸の半径を測定します。ボーダーや区切り線の有無を記録します。
- elevation:シャドウのぼかし具合、広がり、レイヤー構成の方法を分類します。
- motion:観察できる場合(動画/インタラクティブ要素)は、イージングカーブと所要時間の印象を記録します。
ディメンション 2:design_style
- 雰囲気、個性、構成方針など、全体的な印象をまとめます
- SaaS、エディトリアル、ブルータリストなど、ジャンルの典型と比較します
- 装飾の度合いと、余白に対する考え方を記録します
ディメンション 3:visual_effects
- コードから:
<canvas>、WebGL コンテキスト、Three.js/Pixi.js のインポート、GSAP/Lottie の使用、カスタムシェーダー、IntersectionObserver によるスクロールトリガー、SVG の<animate>要素を調べます - スクリーンショットから:標準的な CSS の範囲を超える視覚効果(光るパーティクル、3D オブジェクトのレンダリング、ノイズテクスチャ、グラデーションアニメーション、視差による奥行き、カーソルトレイル、テキストの歪み、グラスモーフィズムの表面など)を説明します。正確な実装方法を特定できない場合は、
composite_notesに記録します。 - 動画/インタラクションのデモから:スクロール時の挙動、ホバー時の歪み、トランジションの演出、読み込みシーケンスを記録します
- 参照元に存在しないエフェクトカテゴリは、
enabled: falseに設定します - 観察結果に基づいて、
overview.effect_intensityとoverview.performance_tierを評価します
フェーズ 3:生成 — DNA をコンテンツに適用する
ユーザーから DNA JSON とデザイン対象のコンテンツが提供された場合:
- references/generation-guide.md を読みます
- DNA JSON を解析し、3 つのディメンションすべてからトークンを抽出します
design_systemの値から CSS カスタムプロパティを作成しますdesign_styleの定性的なフィールドを、主観的なデザイン上の判断に反映します- デザインにアセットや素材が必要な場合、可能な限り元のソースから取得します。ユーザーが URL を提供した場合は、再作成、近似、代替を行わず、その URL から実際のアセットを取得します。
- 適切な技術を使って
visual_effectsを実装します:- 軽量なエフェクト → CSS アニメーション、SVG、バニラ JS
- 中程度のエフェクト → Canvas 2D、GSAP、Lottie
- 高負荷のエフェクト → Three.js、カスタム GLSL シェーダー、Pixi.js
- デザイン出力を生成します(デフォルト:CSS/JS をインライン化した自己完結型 HTML)
- 生成ガイドに記載された品質チェックを実行します
- 検証(DNA に測定済みのパレットが含まれる場合):現在の Design DNA JSON がまだファイルになっていない場合は保存し、生成結果のスクリーンショットを撮影して、その DNA ファイルと照合します。この
SKILL.mdからSKILL_ROOTを解決し、絶対パスを使用してください。measured-colors.jsonという一時ファイルが存在すると仮定してはいけません:
唯一保存されているアーティファクトが単独の測定 JSON である場合は、DNA ファイルの代わりにその JSON を使用できます。画像の参照元が複数ある場合は、それぞれの測定結果を個別に照合して検証します。レポートには、色ごとの ΔE とカバレッジのずれが PASS/FAIL のしきい値とともに表示されます。不合格の場合は、問題のある色を修正して再検証し、見た目で忠実度を判断するようユーザーに求めるのではなく、再検証してください。node "$SKILL_ROOT/scripts/verify.mjs" "$IMPLEMENTATION_SCREENSHOT" "$DESIGN_DNA_JSON"
ユーザーからコンテンツのみが提供され、DNA JSON がない場合、次のどちらを行うか尋ねます:
- まず参照元を分析する(フェーズ 2 に進む)
- 説明されたスタイルを使用する(説明から DNA を抽出してから生成する)
フェーズの組み合わせ
ユーザーは任意の組み合わせで実行できます:
- フェーズ 1 のみ:「デザインの構造/スキーマを見せて」
- フェーズ 2 のみ:「このデザインを分析して」(画像/リンクを含む)
- フェーズ 2 → 3:「このデザインを分析して、同じスタイルでランディングページを作って」
- フェーズ 1 → 2 → 3:全工程
- フェーズ 3 のみ:ユーザーがすでに DNA JSON を持っている
コンテキストから必要なフェーズを判断し、それに応じて実行します。
コメント
Markdown 対応