storybook-to-product について
storybook-to-productは、完成したStorybookのデザインを製品の本番コードへ移すスキルです。製品の規約に合わせてマークアップとスタイルを移植し、コンテンツや操作を接続して検証し、プルリクエストを作成します。追随モードでは後続のストーリー変更も反映します。
主な機能
- 01領域、依存関係、動作の評価
- 02製品の規約に沿ったマークアップとスタイルの移植
- 03コンテンツの出典と素材の判断を記録
- 04データ、フォーム、リンク、操作の接続
- 05成果物の検証とプルリクエストの準備
- 06後続のStorybook変更の反映
活用シーン
- 01完成したStorybook画面の製品への統合
- 02リリース前の仮コンテンツの置き換え
- 03ページ操作の実装とテスト
- 04ストーリー更新の本番コードへの反映
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bradfrost/ skills --skill storybook-to-productインストール後、Claude Code で/storybook-to-productを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
intake/HANDOFF-INTAKE.mdphases/catch-up.mdphase-1-assessment.mdphase-2-content.mdphase-3-integration.mdphase-4-wiring.mdphase-5-proof.mdreference/CAPABILITIES.mdLINKS.mdTRANSLATION.mdtemplates/assessment.mdcatch-up.mdcontent.mdhandoff.mdreport.md詳細
Storybook からプロダクトへ
Storybook で、デザインシステムの実際のコンポーネントと実際のコンテンツを使い、バックエンドに手を煩わされることなく、その場でプロダクトの次期バージョンを設計しました。完成したように見えます。これはフロントエンドの中でも最前線のコードで、ほぼ本番環境に出せる状態です。
「ほぼ」の部分が問題です。ストーリーと稼働中のプロダクトの間には、Storybook では扱う必要のなかったものがすべてあります。プロダクト独自のテンプレート言語、データファイル、サムネイルをクリックすると開くモーダル、サーバーレス関数に送信するフォーム、デザインを補うために誰かが考え出した文言、そして新しいコンポーネントがまだリリースされていないデザインシステムのバージョンです。
このスキルは、その隔たりを埋めます。作業内容を評価し、マークアップとスタイルをプロダクト独自の言語に移し、背後にあるすべての仕組みと連携させ、プロダクトがデザインどおりになったことを確認します。最後にプルリクエストを作成し、各ストーリーのどのバージョンがリリースされたかを正確に記録します。これにより、次回 Storybook に変更を加える際は、最初からやり直すのではなく、差分を取り込んで追いつけます。
これは何ではないか
product-to-storybookではありません。 そちらは、プロダクトに既存の画面を Storybook へ取り込みます。こちらは、画面を Storybook から本番環境へ移します。両者は組み合わせて使えるように作られています。ストーリーがproduct-to-storybookから作られたものであれば、このスキルはその記録を読み取り、必要な情報の大半を手間なく取得します。ds-adoption-planではありません。 そちらは、プロダクト独自の UI をシステムに移行する計画を、プロダクト側から立てます。こちらは完成したデザインを起点に、それをリリースするために何が必要かを検討します。両者の見積もりを同じ基準で比較できるよう、導入計画の工数評価を活用します。vibe-killerではありません。 そちらは、システムのコンポーネントを使って単一のページを再構築します。こちらではページはすでにシステムのコンポーネントで構築済みで、目的はそれを本番環境に反映することです。- リリースツールではありません。 デザインシステムの公開、マージ、デプロイは行いません。
基本ルール
- 仕様はストーリーであり、目指す先はプロダクトです。 何をレンダリングするかはストーリーが決めます。どのように記述するかはプロダクトが決めます。テンプレート言語、ファイル名、CSS アーキテクチャ、クラス名などがそれにあたります。プロダクトを Storybook のコードのように見せてしまう引き継ぎは、プロダクトのメンテナーによって元に戻されます。
- 手を加える前に評価します。 プロダクトのファイルをひとつでも変更する前に、すべての領域の処遇を決め、すべての動作に名前を付け、すべてのシステム依存関係を確認します。評価結果をユーザーに提示し、確認を取ります。誤った廃止によって、ビジネスに今も必要なものが削除されるおそれがあるためです。
- 作り上げたコンテンツを公開してはいけません。 フィクスチャには、実際のコピーと、形を整えるためだけに存在するプレースホルダーコンテンツが混在しています。すべてのフィールドに由来と判断を記録し、完了とする前に、ビルド内に作り上げた値が残っていないかを検索します。公開中のページに偽の人物が載ることを防ぐために、このスキルが存在します。
- コンテンツとメディアはユーザーが決めます。 根拠に基づいてコピーのデフォルトを提案します。画像と動画はすべて確認します。
- 未リリースのものは確認します。 ストーリーが、プロダクトにまだインストールできないデザインシステムの作業に依存している場合、スキルは停止して、どうするかを確認します。デザインシステムのローカルコピーを参照するプロダクトを公開することは決してありません。
- Storybook の要素を本番環境に持ち込みません。 オリジンマーカー、
@scopeラッパー、デコレーター、フィクスチャの残骸はすべて削除し、その後、ビルド出力を検索して削除されたことを確認します。 - すべてのトリガーに遷移先を設定します。 Storybook ではインタラクションの見た目だけが示され、動作は示されません。すべてのモーダル、フォーム、トグル、リンクを接続し、実際のブラウザーですべてのトリガーを操作します。
- プロダクト独自のルールを優先します。 プロダクトのリポジトリにある
CLAUDE.md、AGENTS.md、またはプロセス設定は、作業のブランチ作成、コミット、リリース方法も含め、ここにあるすべてのルールより優先されます。スキルは確認せずにそれに従い、ユーザーが明示的に指示した場合に限り、そこから逸脱します。 - プルリクエストで作業を終えます。 マージとデプロイは、チェックがすべて成功していても、常に人が行います。
- 追従時に上書きしません。 Storybook と本番環境の両方でフィールドが変更されている場合は競合として扱い、人が判断します。本番環境での編集が正しい可能性もあります。
実行の流れ
モード 1:引き継ぎ
- インテーク(
intake/HANDOFF-INTAKE.md)。それぞれにデフォルトが設定された3つの質問に答えます。回答はプロダクトのリポジトリにあるstorybook-to-product/HANDOFF.mdに記録します。 - フェーズ 1:評価(
phases/phase-1-assessment.md)。すべての領域をマッピングし、すべてのシステム依存関係を確認し、すべての動作を一覧にして、見積もりを行います。該当する場合はリリースゲートについて確認します。停止して、ユーザーに提示します。 返答を待ちます。 - フェーズ 2:コンテンツ(
phases/phase-2-content.md)。すべてのフィールドの由来を分類し、デフォルト案を提示して、まとめて一度に確認します。すべてのアセットについて確認します。 - フェーズ 3:統合(
phases/phase-3-integration.md)。デザインシステムを更新し、マークアップを変換し、スタイルを取り込み、確認済みのものを廃止します。 - フェーズ 4:接続(
phases/phase-4-wiring.md)。データ、動作、フォーム、リンク、ページを囲むドキュメント、およびリンク記録に対応します。 - フェーズ 5:検証(
phases/phase-5-proof.md)。ビルド、漏れの検索、ストーリーとの並列比較、すべての動作のテスト、axe、レポート、プルリクエストを行います。
モード 2:追従
phases/catch-up.md。リンク記録を読み、公開済みのバージョン以降にストーリーで変更された箇所をすべて特定し、引き継ぎ以降に本番環境で行われた編集を確認して、差分を独自のプルリクエストで反映します。
ファイルの配置場所
製品のコードは、製品リポジトリのブランチ上で、製品固有の規約に従って変更します。
作業記録は、製品リポジトリのルートに置きます。
storybook-to-product/
├── HANDOFF.md ← intake answers, both versions, runs
├── ASSESSMENT.md ← regions, dependencies, behaviors, estimate
├── CONTENT.md ← every field and asset, with its decision
├── REPORT.md ← what was proven, side by sides
├── links.json ← which story version is in production
└── catch-up/
└── YYYY-MM-DD.md ← one per catch-up
ds-adoption-plan/ または product-inspection/ フォルダーと同じ階層に置きます。ストーリーが product-to-storybook から来た場合は、まずデザインシステムリポジトリ内の作業記録(product-to-storybook/<product>/)を読み、作業がマージされたら 引き継ぎのメモを追加します。reference/LINKS.md では、両者のつながりを保つ方法を説明しています。
このキットのファイル
intake/HANDOFF-INTAKE.md:3つの質問と、確認するタイミングを待つ質問phases/phase-1-assessment.md:領域、依存関係、動作、見積もり、そしてチェックポイントphases/phase-2-content.md:どのコンテンツをリリースするかを項目ごとに記載phases/phase-3-integration.md:製品の言語で記述するマークアップとスタイルphases/phase-4-wiring.md:データ、動作、フォーム、リンクphases/phase-5-proof.md:ビルド、レンダリング、検証、報告、プルリクエストphases/catch-up.md:後から加わった Storybook の変更を反映reference/TRANSLATION.md:ストーリーの構成要素と製品テンプレートの対応関係reference/LINKS.md:Storybook と製品をつなぐ要素reference/CAPABILITIES.md:このスキルでできることとできないことtemplates/:作業記録内の各ファイルの出力テンプレート
文体
平易で、勢いがあり、具体的にします。評価は、対応方針を示す領域の表と、末尾の数値で構成します。コンテンツ台帳には、両方の値を並べて示します。レポートには、構築した内容、検証できた内容、誰かの対応待ちの項目を記載します。読む人が、プルリクエストに含まれる内容、自分が判断すべきこと、そしてリリースの準備ができているかを正確に把握できるようにします。