mcpField
C
commerce-b2b-open-code-components-integrate

commerce-b2b-open-code-components-integrate

github.com/forcedotcom開発1.1k4.6k 回インストール1 日前に更新
リポジトリ

commerce-b2b-open-code-components-integrate について

Salesforce B2B Commerce プロジェクト向けのスキルです。オープンソースのコンポーネントとラベルをストアのサイトメタデータにコピーし、Experience Builder で使えるようにします。リポジトリとメタデータを確認し、デプロイ手順も示します。

主な機能

  1. 01コンポーネントリポジトリのクローンまたは再利用
  2. 02有効なパッケージディレクトリの特定
  3. 03ストアメタデータの検索または取得
  4. 04コンポーネントとラベルファイルのコピー
  5. 05上書きまたは新規分のみコピーする選択肢
  6. 06デプロイ手順の提示

活用シーン

  1. 01B2B ストアへのオープンソースコンポーネント追加
  2. 02Experience Builder でのコンポーネント利用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/forcedotcom/sf-skills --skill commerce-b2b-open-code-components-integrate

インストール後、Claude Code で/commerce-b2b-open-code-components-integrateを入力して読み込まれたか確認します。

詳細

このスキルを使用するタイミング

次のことを行う必要がある場合に、このスキルを使用します。

  • すべてのオープンソースの B2B Commerce コンポーネントをストアに統合する
  • 新規または既存の B2B Commerce ストアにオープンソースコンポーネントを追加する
  • Experience Builder でオープンコードコンポーネントを利用できるようにする

ルール

  1. 実行前に必ず説明してください。 コマンドを実行する前に、コマンドの処理内容と実行する理由をユーザーに伝える必要があります。コマンドだけを表示して許可を求めてはいけません。ユーザーが説明を読んで、承認する前に目的を理解できるようにしてください。

概要

このスキルは、公式 Salesforce リポジトリ(https://github.com/forcedotcom/b2b-commerce-open-source-components)からすべてのオープンソースの B2B Commerce コンポーネントをコピーし、B2B Commerce ストアのサイトメタデータに追加します。統合後、コンポーネントは Experience Builder のコンポーネントパレットに表示されます。


起動時のフロー

このスキルが起動されたら、コピーする前に以下のチェックを自動的に実行してください。

Check 0: パッケージディレクトリを特定する

sfdx-project.json を読み込み、有効なパッケージディレクトリを選択します。packageDirectories[] を取り出し、"default": true のエントリを使用します。デフォルトに指定されたエントリがない場合は、最初のエントリを使用します。以下では、この値を <package-dir> として使用します。sfdx-project.json が存在しない、または packageDirectories がない場合は、ユーザーに伝えて中止します。

Check 1: オープンソースリポジトリ

リポジトリが .tmp/b2b-commerce-open-source-components にクローンされていることを確認します。

  1. ディレクトリが存在しない場合: ユーザーに次のように伝えます。「公式の B2B Commerce オープンソースコンポーネントリポジトリを、ローカルの .tmp/ フォルダーにクローンしています。これにより、すべてのオープンコードコンポーネントを利用できます。」 次に、git clone https://github.com/forcedotcom/b2b-commerce-open-source-components .tmp/b2b-commerce-open-source-components を実行します。
  2. ディレクトリが存在し、 force-app/main/default/sfdc_cms__lwc と sfdc_cms__label が含まれている場合は、次の選択肢を提示します。

    「オープンソースリポジトリはすでにクローンされています。どのように進めますか?」

    1. 既存のものを再利用 — すでにクローンされているリポジトリを使用する
    2. 再クローン — 削除して GitHub から新たにクローンする
  3. ディレクトリは存在するが、構成が無効な場合: ユーザーに次のように伝えます。「クローンされたリポジトリの構成が想定と異なります。削除して新たにクローンします。」 次に、削除して再クローンします。
  4. クローンに失敗した場合: ユーザーに知らせて中止します。
Check 2: ストアとサイトメタデータ

ストアが選択されており、サイトメタデータがローカルで利用できることを確認します。

  1. ユーザーに次のように伝えます。「プロジェクトに B2B ストアのメタデータがローカルにあるか確認しています。」 <package-dir>/main/default/digitalExperiences/site/ にストアディレクトリがあるか確認します。
  2. ストアメタデータが存在する場合: それを使用します。複数のストアが見つかった場合は、ユーザーに選択してもらいます。
  3. ストアメタデータが見つからない場合: 委任する前に、接続済みの組織からの取得を試みます。
    1. sf org list を実行する(または sf config get target-org を確認する)ことで、接続済みの組織を特定します。複数ある場合は、ユーザーに確認するか選択してもらいます。
    2. sf org list metadata --metadata-type DigitalExperienceBundle --target-org <alias> を実行して、その組織の DigitalExperienceBundle サイトバンドルを一覧表示します。site/* のエントリに絞り込みます。
    3. サイトバンドルが1つ以上ある場合は、ユーザーに使用するものを選んでもらい、次を実行します。 sf project retrieve start --metadata "DigitalExperienceBundle:site/<storeName>" --target-org <alias> バンドルは <package-dir>/main/default/digitalExperiences/site/<storeName>/ に配置されます。
    4. 接続済みの組織がない場合、サイトバンドルが見つからない場合、または取得に失敗した場合に限り: commerce-b2b-store-create スキルに委任します。

すべてのチェック後に必要な状態:

  • パッケージディレクトリ — Check 0 で特定した値(例:force-app)
  • ストア名 — 選択した fullName の値(例:My_B2B_Store1)
  • サイトメタデータのパス — <package-dir>/main/default/digitalExperiences/site/<store-name>/
  • リポジトリのパス — .tmp/b2b-commerce-open-source-components/

統合作業

クローンしたリポジトリからすべてのコンポーネントとラベルをサイトディレクトリにコピーします。

  • ソース: .tmp/b2b-commerce-open-source-components/force-app/main/default/sfdc_cms__lwc/* および sfdc_cms__label/*(オープンソースリポジトリ固有のレイアウト。常に force-app)
  • コピー先: <package-dir>/main/default/digitalExperiences/site/<store-name>/sfdc_cms__lwc/ および sfdc_cms__label/(<package-dir> はチェック 0 で解決します)

手順:

  1. ユーザーに次のように伝えます:「ストアのサイトメタデータにオープンコードコンポーネントがすでに存在するか確認しています。」 コピー先のディレクトリにファイルがすでに存在するか確認します。
  2. ファイルが存在する場合は、次の選択肢を提示します。

    「{store-name} にはコンポーネントがすでに存在します。どのように進めますか?」

    1. すべて上書き — 既存のコンポーネントをすべてリポジトリの最新のものに置き換えます
    2. 新しいもののみコピー — 既存のコンポーネントはスキップし、まだ存在しないものだけをコピーします
  3. ユーザーに次のように伝えます:「クローンしたリポジトリから、オープンコードの LWC コンポーネントをすべてストアのサイトメタデータディレクトリにコピーしています。」 ソースからすべてのコンポーネントディレクトリをコピーします。
  4. ユーザーに次のように伝えます:「これらのコンポーネントに必要な関連ラベルファイルをコピーしています。」 ソースからすべてのラベルディレクトリをコピーします。
  5. 次のように報告します:「X 個のコンポーネントと Y 個のラベルセットをコピーしました」

出力:

Integration Complete!

Copied: X components and Y label sets to <store-name>

Next Steps:
1. Deploy: sf project deploy start -d <package-dir>/main/default/digitalExperiences/site/<store-name>
2. Open Experience Builder and use new components from the palette
3. Publish your site when ready

やり取りの例

ユーザー:「オープンコードコンポーネントをストアに統合して」

エージェント:「オープンソースコンポーネントのリポジトリがローカルにすでにクローンされているか確認しています……」

エージェント: (リポジトリが存在する)

「オープンソースリポジトリはすでにクローンされています。どのように進めますか?」

  1. 既存のものを再利用 — すでにクローンされているリポジトリを使用します
  2. 再クローン — 削除して GitHub から新たにクローンします

ユーザー:「1」

エージェント:「プロジェクトに B2B ストアのメタデータがすでにローカルにあるか確認しています……」

  • [done] My_B2B_Store1 のストアメタデータが見つかりました

エージェント:「ストアのサイトメタデータにオープンコードコンポーネントがすでに存在するか確認しています……」

エージェント: (ファイルが存在する)

「My_B2B_Store1 にはコンポーネントがすでに存在します。どのように進めますか?」

  1. すべて上書き — 既存のコンポーネントをすべてリポジトリの最新のものに置き換えます
  2. 新しいもののみコピー — 既存のコンポーネントはスキップし、まだ存在しないものだけをコピーします

ユーザー:「1」

エージェント:「クローンしたリポジトリから、オープンコードの LWC コンポーネントをすべてストアのサイトメタデータディレクトリにコピーしています……」 エージェント:「これらのコンポーネントに必要な関連ラベルファイルをコピーしています……」

  • [done] 45 個のコンポーネントと 38 個のラベルセットをコピーしました
Integration Complete!

Copied: 45 components and 38 label sets to My_B2B_Store1

Next Steps:
1. Deploy: sf project deploy start -d force-app/main/default/digitalExperiences/site/My_B2B_Store1
2. Open Experience Builder and use new components from the palette
3. Publish your site when ready

エラー処理

エラーメッセージ対応
ストアが見つからない"Store '{name}' not found in org."ストアを再度一覧表示します
Git クローンの失敗"Failed to clone repository. Check internet connection."再試行するか中止します
リポジトリ構造が無効"Repository structure has changed. Expected sfdc_cms__lwc and sfdc_cms__label."ユーザーに警告して中止します
ファイルのコピーに失敗"Failed to copy files. Check file permissions."エラーの詳細を表示します

検証チェックリスト

  • 起動フローが完了している:リポジトリがクローンされ、ストアメタデータが利用可能
  • コンポーネントが正しいコピー先パス(sfdc_cms__lwc/)にコピーされている
  • ラベルが正しいコピー先パス(sfdc_cms__label/)にコピーされている
  • コピー中にファイル権限エラーが発生していない
  • デプロイコマンドが提示され、テストについてユーザーに案内されている

コメント