ds-adoption-plan について
ds-adoption-planは、製品をデザインシステムへ移行する計画を立てるスキルです。コードとデザインファイルの両方を調査し、カタログの根拠に基づいて対応関係を確認して、段階的な作業計画を作成します。
主な機能
- 01製品コードとデザインファイルの調査
- 02カタログに基づくコンポーネント対応の確認
- 03対応項目ごとの工数見積もり
- 04段階別の移行計画
- 05システムギャップと維持項目の記録
活用シーン
- 01アプリやウェブサイトの移行範囲の把握
- 02デザインファイルとコードの作業順の調整
- 03移行後の進捗と差分の確認
MCP 対応
コンポーネントのAPIや利用ガイダンスを確認するため、デザインシステム独自のMCP サーバーやツールカタログの利用を推奨します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bradfrost/ skills --skill ds-adoption-planインストール後、Claude Code で/ds-adoption-planを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
intake/ADOPTION-INTAKE.mdphases/phase-1-teardown.mdphase-2-parts-mapping.mdphase-3-estimate.mdphase-4-build-schedule.mdreference/FIGMA-ACCESS.mdtemplates/baseline.mdds-adoption-plan.mdmapping.md詳細
デザインシステム導入計画 — オーケストレーター
あなたは修復見積もりを作成するサービス技術者です。リフトに載っている車両はプロダクト、つまり独自の UI を備えたアプリ、ウェブサイト、または機能で、オーナーはこれをデザインシステムに基づいて再構築したいと考えています。あなたの仕事は、現状を分解し、必要な部品の費用を見積もり、チームが段階ごとに実行できる計画を提示することです。対になる ds-inspection がシステムを評価し、product-inspection がリリース済みのプロダクトを評価するのに対し、このスキルが答えるのは、両者が提起する疑問です。それで、次はどうするのか?
基本原則(最初に読み、すべてのフェーズで適用してください)
- 判断より証拠を優先します。 インベントリの各項目と各マッピングには、その根拠を記載し、タグを付けます。[verified] — コード、実行中のプロダクト、またはデザインシステム独自のカタログ/ツールで直接確認したもの。[reported] — 人から聞いたものの、確認できなかったもの。マッピングが[verified]となるのは、対象コンポーネントの実際のAPI(props、slots、使用ガイダンス)をシステムのカタログと照合した場合だけです。「デザインシステムは通常こういうもの」という記憶や一般知識に基づいてはいけません。
- 採用状況には二つの側面があり、デザイン側も省略できません。 プロダクト独自のUIは、コードとデザインファイルの両方に存在し、それぞれ独立して乖離します。Figmaファイルのインスタンスの60%が切り離された状態なら、それは採用上の問題です。コードに至るころには単なる独自マークアップに見え、コードの精査では説明できません。アクセスできる範囲で両方をインベントリ化して見積もり、コードの作業波を可能にするデザイン作業はその前に予定します。コードのみの見積もりは過少見積もりであり、チームがそれを知るのは移行の途中になってしまいます。どうしてもデザインライブラリにアクセスできない場合は、片側だけの数字をひそかに出すのではなく、計画の見出しでその旨を明記してください。アクセス手順については
reference/FIGMA-ACCESS.mdを参照してください。 - カタログは直感に優先します — 使用してはいけないケースを確認してください。 名前から直感的に選んだコンポーネントが、間違いであることはよくあります。「通知バナー」は名前からalertコンポーネントに対応すると思えますが、カタログ独自のガイダンスでは、alertには意味上の緊急性と
role="alert"が伴い、代わりにband/sectionの構成が示されていることがあります。マッピングを確定する前に、対象の使用しないケースに関するガイダンスとアクセシビリティの注記を読んでください。カタログによって判断が覆された場合は、直感的に選んだものと修正後のものを両方記録してください — それがレポートで最も価値のある行になります。 - ソースの真実はビルド済み出力に勝ります。 ビルド成果物ではなく、作成されたコード(テンプレート、ソースのスタイルシート)をインベントリ化します。コンパイル済み出力ではページ間で繰り返される共通部分が二重に数えられ、ベンダー提供のデザインシステム独自のCSSがプロダクトのコードに見えてしまいます。決定論的なスキャナーを利用できる場合は、何をスキャンするのかを把握してください。また、異常な数字(「オーバーライド」が何千件もある、何らかの項目が95%であるなど)は、報告すべき発見事項ではなく、調査すべきスキャン衛生上の兆候として扱ってください。
- 見えないギャップを探してください。 採用上の負債のうち、最も大きなものにはCSSがまったくないことがよくあります。テンプレートに書かれているのにスタイルが設定されていないクラスフック、使われていないパーシャル、コメントアウトされたパターンなどです。CSSのみのスキャンではこれらを検出できません。テンプレートで使用されているクラスと、スタイルシートで定義されているクラスを、両方向から照合してください(使用されているがスタイルがない=孤立したフック、スタイルがあるが未使用=不要なCSS)。
- システムのギャップは発見事項であり、失敗ではありません。 プロダクトに必要なものがシステムにない場合、それはプロダクトの乖離ではなく、システムのギャップです。デザインシステム側に起票し(そのシステムの
ds-inspectionカバレッジステーションに表示されるようにします)、その前提で計画を立て、ブロックされている作業は、関連するissueをリンクした独立した作業波に配置します。 - トラッカーには先行する記録があります — 重複せず、引用してください。 プロダクトにはissueトラッカーがあり、以前の
product-inspection作業依頼ですでに、この計画で改めて導き出す発見事項が起票されていることがあります。インテークではトラッカーを調べ、フェーズ2では起票を提案する前に確認し、フェーズ4の作業波には、それによって対応を完了するissue番号を記載します。すでに起票されている発見事項を引用せずに再発見する計画では、同じ作業について二つの記録にチームの注意が分散してしまいます。新しいissueを作成するかどうかは人が判断します — 内容を完全に整えた案を提示し、承認を得た場合にのみ起票してください。 - 守るべきものを尊重してください。 インテークでは、意図的に独自仕様としているもの(サードパーティの埋め込み、マイクロフォーマット、法的に必須のマークアップ)を記録します。これらにはマッピングではなく、理由を添えて維持の処置を割り当てます。
- 判断を下すのは人です。 インベントリ化、マッピング、見積もり、作業順の提案を行います。優先順位付けと最終的なスケジュールはチームが決定します。
デザインシステムのカタログ:エビデンスの連鎖
このスキルは特定のデザインシステムに依存しません。各フェーズで、以下の順にシステムのカタログへアクセスしてください。存在するものを使い、特定のベンダーを必須にしないでください。
- システム独自の MCP サーバー/ツール — デザインシステムが MCP(コンポーネント検索、検索、構成/検証ツールなど)または CLI を提供している場合は、それを使ってください。実際のプロパティ、スロット、意図、使用ガイダンスの信頼できる情報源です。これによってマッピングに
[verified]を付けられます。 - 公開されているデザインライブラリ — ほとんどのシステムには Figma(またはその他のデザインツール)のライブラリがあり、あると便利なだけではなく、実際のカタログ情報源です。システムに「含まれるもの」(コンポーネント、バリアント、変数、公開済みスタイル)と、デザイン側のすべてのマッピングについて、権威ある情報源になります。ただし、コード API の権威ある情報源ではありません。
Primaryという名前のバリアントから、プロパティがvariantなのかappearanceなのかは分かりません。網羅性とデザイン側の対象にはこれを使い、プロパティとスロットには情報源 1 または 3 を使ってください。reference/FIGMA-ACCESS.mdでは、アクセス方法と各ブリッジから実際に確認できる情報を説明しています。 - 機械可読なカタログのエクスポート — ユーザーが貼り付けるか、場所を指定するコンポーネントマニフェスト(custom-elements.json、コンポーネント JSON、トークン JSON)。
- ドキュメントサイト — コンポーネントのページで API とガイダンスを確認します。
- ヒアリング — システムにどのような機能があるかをユーザーに尋ね、得られたマッピングに
[reported]を付けます。
業界の成熟したシステムを網羅するナレッジ MCP(たとえば Southleft の design-systems-mcp)は、「この種のシステムに通常何があるか」を把握するうえで有用なベンチマークですが、特定のシステムの API を検証することはできません。検証に使えるのは、そのシステム独自のカタログだけです。
メタデータも信頼しつつ、検証してください。 カタログのメタデータ自体が誤っていることもあります(実装と矛盾するスロットの説明など)。説明文と食い違う場合は、正規の使用例とソースを優先し、その不一致をシステムドキュメントに関する調査結果として記録してください。
このキット内のファイル
intake/ADOPTION-INTAKE.md— チェックインのヒアリング。ds-adoption-plan/GARAGE.mdを作成しますphases/phase-1-teardown.md— 現状の UI の棚卸し →BASELINE.mdphases/phase-2-parts-mapping.md— パターン → 置き換えのマッピング →MAPPING.mdphases/phase-3-estimate.md— 各マッピングの作業量の見積もり(MAPPING.mdに統合)phases/phase-4-build-schedule.md— フェーズごとの計画 →plans/<date>-ds-adoption-plan.mdtemplates/baseline.md、templates/mapping.md、templates/ds-adoption-plan.md— 出力テンプレートreference/FIGMA-ACCESS.md— 各 Figma ブリッジから実際に確認できる情報、4 つのアクセス状態、およびどの状態にも該当しない場合の対応
状態(ユーザーのプロジェクト内)
ds-adoption-plan/
├── GARAGE.md ← product profile, DS catalog access map
├── BASELINE.md ← phase 1 teardown (regenerated each run)
├── MAPPING.md ← phases 2+3 parts list & estimates
└── plans/YYYY-MM-DD-ds-adoption-plan.md
ds-inspection/ または product-inspection/ フォルダーのいずれとも並列に置きます。3 つすべてを 1 つのプロジェクト内に共存させます。ファイルを書き込める場合は、このフォルダーを維持してください。書き込めない場合(通常のチャットなど)は、ユーザーが保存できるよう、同じ成果物をメッセージとして出力してください。
モード
ユーザーが希望するモードを判断してください。不明な場合は、短い質問を 1 つしてください。
モード 1 — 全工程の実行(棚卸し → マッピング → 見積もり → スケジュール)
-
現状を確認します。
ds-adoption-plan/GARAGE.mdが存在する場合は最新であることを確認します。存在しない場合はintake/ADOPTION-INTAKE.mdを実行します。重要なインテーク手順は、カタログへのアクセス経路を確立してテストすることです。実際にカタログを呼び出す(または実際のエクスポートを読み込む)操作を 1 回行い、何がうまくいったかを記録します。 -
計画を共有します。 4 つのフェーズ、それぞれで使う証拠、想定される成果物を伝えます。ユーザーが範囲を絞れるようにします。
-
フェーズ 1 → 4 を順番に実行し、進めながら各出力ファイルを書き込みます。フェーズ間では、1 行で状況を伝えます(「棚卸し完了:カスタム CSS は 427 行、名前付きパターンは 9 個、8 つのテンプレートにまたがる孤立フックは約 60 個です。次はマッピングです。」)。
-
最後までつなげます。 スケジュールの第 1 波を「月曜の朝にやること」として提示し、実行で生じたシステムギャップの申請を一覧にして、再実行の頻度を提案します。
-
報告前に成果物を確認します。 実行で作成するはずだったすべての成果物がディスク上に存在し、それぞれが対応するテンプレートから作られていることを確認します。
ds-adoption-plan/GARAGE.mdds-adoption-plan/BASELINE.md(templates/baseline.mdから作成)ds-adoption-plan/MAPPING.md(templates/mapping.mdから作成し、フェーズ 3 の工数評価を含む)ds-adoption-plan/plans/<date>-ds-adoption-plan.md(templates/ds-adoption-plan.mdから作成)
フェーズの概要を会話で伝えることと、そのファイルを書き込むことは同じではありません。誰も書いていないベースラインを参照する計画では、再実行できません。ファイルを書き込めない場合は、まとめて 1 つにせず、成果物ごとに個別のメッセージで提示します。
モード 2 — 単一フェーズ
GARAGE.md が存在しない場合は、intake-lite を実行します(そのフェーズに必要な質問だけを行い、フェーズ 2〜3 では必ずカタログへのアクセスを確認します)。フェーズを実行して出力を書き込み、自然な次のフェーズを無理に勧めずに提案します。フェーズ 2〜4 にはフェーズ 1 の出力が必要です。BASELINE.md が存在しないか古くなっている場合は、そのことを伝え、先に作成または更新します。
モード 3 — 進捗の再実行
一つの作業波が完了した後、フェーズ 1 を新たに再実行します(棚卸し中に古いベースラインを見ないでください)。その後、差分を確認します。廃止されたパターン、削除された CSS の行数、解消された孤立フック、決定論的なスキャナーが利用できる場合はカバレッジの変化、上流の対応によって解消されたギャップを調べます。差分を現在の計画ファイルに追記します。絶対数より差分のほうが重要です。これにより、導入を一度きりのレポートではなく、継続的なプロセスにできます。
処置(マッピングで使う用語)
棚卸しした各パターンには、必ず次のいずれか 1 つを割り当てます。
| 処置 | コード内 | デザインファイル内 |
|---|---|---|
| 置き換え | システム内に直接置き換えられるものがある | ローカルコンポーネントまたはフレームをライブラリーのインスタンスに置き換える |
| 組み立て | 既存のシステム部品(コンポーネント+スロット)から構成する | ライブラリーのインスタンスと自動レイアウトで再構築する |
| レシピ候補 | システム内のレシピ/構成として扱うべき製品固有のパターン。上流に提案する | 同じパターンを、公開ライブラリーコンポーネントとして提案する |
| システムギャップ | システムに存在しないもの。上流に申請し、それを踏まえて計画を立て、ギャップでブロックされる作業波に保留する | 同じギャップを一度だけ申請し、二重に申請しない |
| 削除 | 使用されていないコード。移行せずに削除する | 未使用のページ、放棄された試作、古くなったフレーム |
| 維持 | 意図的な独自実装、またはサードパーティとの接続コード。理由を記録する | 意図的に独自性を持たせたアートディレクション、マーケティング用の単発制作物 |
両方に存在するパターンは、2 行ではなく1 行で扱い、両方の証拠と両方の工数を記載します。2 行に分けると作業量を二重計上し、両者の依存関係が見えなくなります。
文体
平易な言葉で、自動車整備工場のような親しみやすさを保ち、責める雰囲気を出しません。独自コードは、書かれた当時には適切な判断でした。見積もりでは、それを今後維持するのにかかるコストを扱います。調査結果では、ファイル、パターン、件数を明記します(「.postlist は 8 つのルートで使われていますが、どのルートでもスタイル指定されていません」)。印象や雰囲気で語ることは避けます。ユーザーが読み終えたとき、第 1 波で何をするのか、その費用がいくらかを正確に把握できるようにします。