mcpField
B
b2c-config

b2c-config

github.com/salesforcecommercecloud開発57113 回インストール今日更新
リポジトリ

b2c-config について

b2c-configは、Salesforce B2C Commerce CLIとMCPサーバーの設定を調査・診断するスキルです。設定元の優先順位、認証、プロジェクトコンテキストを説明し、CLIとMCPの使い分けも示します。

主な機能

  1. 01解決済み設定の確認
  2. 02設定元の優先順位の説明
  3. 03Storefront Nextフォールバックの説明
  4. 04認証方式の解説
  5. 05MCPのプロジェクトコンテキストの整理

活用シーン

  1. 01予期しない設定値や不足値の診断
  2. 02適切な設定ファイルとインスタンスの選択
  3. 03コマンドで使われる認証方式の確認

MCP 対応

このスキルは、config_inspectや呼び出し単位のプロジェクト、設定、インスタンス指定など、MCPサーバーの設定対応ツールを説明します。また、設定確認とMCPツールの選択やクライアント起動設定を区別します。

インストール

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

$npx skills add https://github.com/salesforcecommercecloud/b2c-developer-tooling --skill b2c-config

インストール後、Claude Code で/b2c-configを入力して読み込まれたか確認します。

同梱ファイルevals/trigger-evals.json

詳細

B2C Config Skill

通常の確認では、config_inspect または b2c setup inspect を直接呼び出してください。スキルを読む必要はありません。シークレットは必ずマスキングしてください。通常、dw.json を手動で読む必要はありません。ソースを設定するときや、予期しない値や値が見つからない場合の原因を調べるときは、該当するセクションをお読みください。

タスクCLIMCP推奨事項/違いフォールバック
解決済みの設定を確認するb2c setup inspectconfig_inspectどちらでも同じです。どちらも同じリゾルバーを使用し、デフォルトで値をマスキングします。MCP では呼び出しごとにプロジェクト/インスタンスを上書きできます。編集する場合や問題を解決できない場合に限り、ソースファイルを確認します。
設定を変更する、または認証するb2c setup set、b2c setup、b2c auth設定を書き込む同等の機能はありませんCLI を使用してください。要求する操作に応じて、コマンドのヘルプを確認してください。対象の設定ソースを編集します。

b2c を使用できない場合は、npx @salesforce/b2c-cli を使用してください。

CLI による設定の検出方法

CLI は、インスタンスのホスト名、認証情報、テナント ID、MRT API キーなどの設定を複数のソースから自動的に検出します。通常、--server、--client-id、--client-secret、--username、--password、--tenant-id、--short-code、--api-key をフラグとして渡す必要はありません。CLI は環境変数または設定ファイルから値を取得します。

解決順のソース(優先度の高い順):

  1. CLI フラグと環境変数 — 明示的に指定した値が常に優先されます。シェル変数は env ファイルより優先されます。次に、プロジェクトの .env(または --dotenv-file/SFCC_DOTENV_FILE で選択したファイル)内のツールキット変数(SFCC_*、MRT_*)が優先されます。
  2. プラグインソース(優先度高) — カスタム設定プラグイン(シークレットマネージャーなど)。
  3. dw.json — --config/SFCC_CONFIG、env ファイル、プロジェクトローカルのファイル、または共有のグローバル dw.json によって選択されます。単一のインスタンス、または active: true/-i <name> で選択する configs[] 配列に対応しています。
  4. Storefront Next の変数 — 選択した dw.json エントリーで値が設定されていないフィールドのみを補完します(下記参照)。
  5. ~/.mobify — ホームディレクトリのファイル(MRT API キーのみ)。
  6. プラグインソース(優先度低)。
  7. package.json の b2c キー — 機密情報を含まないプロジェクトのデフォルト値(例:shortCode、clientId、mrtProject)。clientSecret/password などの機密フィールドは、意図的にここでは許可されていません。

ソース間ではホスト名の保護が適用されます。env ファイルの SFCC_SERVER が、選択した dw.json エントリーのホスト名と異なる場合、そのエントリー全体がスキップされます(HOSTNAME_MISMATCH 警告)。どのソースにもテナント ID が設定されておらず、ホスト名がサンドボックスのホスト名(abcd-001.dx.commercecloud.salesforce.com)の場合、テナント ID が導出されます(abcd_001)。設定済みのテナント ID と一致しない場合は、TENANT_MISMATCH 警告が表示されます。反対に、どのソースにもホスト名が設定されておらず、テナント ID がサンドボックスのテナント(abcd_001。Storefront Next の f_ecom_abcd_001 組織 ID を含む)の場合、ホスト名が導出されます(abcd-001.dx.commercecloud.salesforce.com)。

.env の代わりに別の env ファイルを使用するには、--dotenv-file .env.staging(または SFCC_DOTENV_FILE)を指定してください。これは .env に追加で適用されるのではなく、置き換えられます。--dotenv-file "" を指定すると env ファイルを使用せず、--config "" を指定すると dw.json を使用しません。

予期しない値がある場合は、config_inspect または b2c setup inspect を使って、解決済みの設定とソースを確認してください。

Storefront Next の環境互換性

リゾルバーは、プロジェクトで既存の B2C Commerce と SLAS の設定を再利用できるよう、これらの Storefront Next 変数をフォールバックとして受け入れます。PUBLIC__app__* と COMMERCE_API_SLAS_SECRET の優先順位は dw.json より低くなります。-i stg を指定すると、stg 独自のテナント、ショートコード、サイト、SLAS クライアントが維持され、不足している値だけがこれらの変数で補われます。

Storefront Next の変数解決されるフィールドデフォルトのツールキット変数
PUBLIC__app__commerce__api__clientIdslasClientIdSFCC_SLAS_CLIENT_ID
PUBLIC__app__commerce__api__organizationIdtenantIdSFCC_TENANT_ID
PUBLIC__app__commerce__api__shortCodeshortCodeSFCC_SHORTCODE
COMMERCE_API_SLAS_SECRETslasClientSecretSFCC_SLAS_CLIENT_SECRET
PUBLIC__app__defaultSiteIdsiteIdSFCC_SITE_ID
MRT_PROJECTmrtProjectMRT_PROJECT
MRT_TARGETmrtEnvironmentMRT_ENVIRONMENT

明示的なフラグ、デフォルトのツールキット変数、選択した dw.json エントリは、これらのフォールバックより優先されます。MRT_PROJECT と MRT_TARGET はツールキット変数であり、ツールキットの優先順位が維持されます。

共有グローバルデフォルト

同じ dw.json 形式のファイルを CLI、MCP サーバー、B2C DX VS Code 拡張機能で共通して使う場合は、共有フォールバックを使用します。

b2c setup default-config set /path/to/dw.json
b2c setup default-config get
b2c setup default-config unset

設定ファイルの選択順序は、明示的な --config、プロセスの SFCC_CONFIG、環境ファイルの SFCC_CONFIG、プロジェクトローカルの dw.json、グローバルデフォルトです。グローバルファイルが、明示的な選択やプロジェクトローカルの選択に取って代わることはありません。明示的なパス(--config / SFCC_CONFIG)を指定した場合は、そのパスのみが使用され、グローバルファイルは使用されません。setup inspect では、グローバルデフォルトがスキップされた場合にその旨が表示されます。

検出されたプロジェクトの dw.json とグローバルの dw.json は、1 つのインスタンスカタログを構成します。-i <name> は最初にプライマリファイルを検索し、次にグローバルファイルを検索します。同名のプライマリエントリがある場合は、グローバルエントリより優先されます。選択された各インスタンスは完全な設定であり、もう一方のファイルにある一致するエントリとフィールドがマージされることはありません。インスタンスの一覧表示、削除、有効化は両方のファイルに対して行われます。作成時は、プライマリファイルが存在すればそこに書き込み、存在しなければグローバルの dw.json に書き込みます。

-i を指定しない場合は、有効なプライマリインスタンスが優先されます。ルートレベルのプライマリ設定に active フィールドがない場合、その設定が暗黙のデフォルトになります。これを無効にして、有効またはデフォルトのグローバルインスタンスを選択できるようにするには、ルートに active: false を設定します。b2c setup inspect の Sources セクションには両方のファイルが表示され、選択されたファイルが示されます。

MCP プロジェクトのコンテキスト

MCP のインストールまたはツールの選択には、利用可能な場合は mcp/b2c-mcp-server を使用するか、MCP configuration guide(b2c docs read mcp-configuration)を参照してください。 これらはクライアントの起動設定です。config_inspect が報告するのは B2C の値とその情報源であり、有効なツールセットやクライアントフィルターではありません。プロジェクトの .env では MCP ツールは選択されません。

ローカルの MCP プロジェクトツールでは projectDirectory を指定できます。B2C/MRT 設定を解決するツールでは、同じフラットな projectDirectory、configPath、instanceName 引数を指定できます。このオーバーライドは、MCP プロセスの作業ディレクトリが開いているプロジェクトではなくプラグインディレクトリである場合があるプラグインのインストール時に、特に重要です。設定を認識する各呼び出しで、MCP サーバーは次の処理を行います。

  1. projectDirectory から .env を解析します。
  2. そのファイルにある、サポートされているすべての B2C/MRT 環境変数を適用します。
  3. 次の順序で dw.json 形式の設定ファイルを選択します。呼び出しごとの configPath、起動時の --config / SFCC_CONFIG、プロジェクトの .env にある SFCC_CONFIG、${projectDirectory}/dw.json、共有のグローバルデフォルト。明示的に指定されたパスを使用する場合、共有のグローバルデフォルトは適用されません。プロジェクトの .env にある Storefront Next の変数は、dw.json より優先度の低い設定項目のみ補完します。
  4. 呼び出しごとの相対パス configPath と、プロジェクトの .env にある相対パス SFCC_CONFIG の値を、projectDirectory を基準に解決します。
  5. instanceName が指定されている場合、プライマリファイルを先に参照し、次に共有のグローバル dw.json を参照して選択します。どちらのファイルも変更しません。
  6. 登録済みプラグインの情報源、MRT の認証情報、package.json など、通常のツール設定情報源も引き続き参照します。
  7. 相対パスの場合、cartridgeDirectory、buildDirectory、outputDirectory などの専用パスも同じルートを基準に解決します。

プロジェクトの .env の値は MCP の呼び出しごとに適用されるため、あるプロジェクトの環境が別のプロジェクトに漏れることはありません。

プロジェクトや設定を認識する各結果には、信頼できる簡潔な resolution ブロックが含まれます。このブロックでは、ツールの説明に含まれるパスに依存せず、選択されたプロジェクト、設定ファイル、インスタンス、ホスト名、専用ディレクトリが報告されます。セッションおよび監視の開始呼び出しではこの情報が保持され、一覧表示ツールから後続の呼び出しで参照できます。MCP の config_inspect ツールは、さらに設定情報源の完全なグラフを返し、b2c setup inspect と同じ SDK リゾルバーおよび登録済み CLI プラグイン設定情報源を使用します。意図したプロジェクト、ファイル、インスタンスを照合するには、projectDirectory、configPath、および/または instanceName を指定してください。

dw.json のキーの大文字・小文字

dw.json のフィールド名は キャメルケースとケバブケースのどちらにも対応しており、同等に扱われます。たとえば、次の形式はいずれも使用できます。

どちらの形式も使用できます
clientId ≡ client-id
clientSecret ≡ client-secret
codeVersion ≡ code-version
tenantId ≡ tenant-id
shortCode ≡ short-code ≡ scapi-shortcode
webdavHostname ≡ webdav-hostname ≡ webdav-server ≡ secureHostname
certificatePassphrase ≡ certificate-passphrase ≡ passphrase

hostname に対する server のような旧式のエイリアスも、引き続きサポートされています。値が読み込まれない場合、大文字・小文字が原因であることはほとんどありません。まずスペルを確認し、次に b2c setup inspect を実行して、CLI が実際に解析した内容を確認してください。

dw.json 用の JSON Schema は https://salesforcecommercecloud.github.io/b2c-developer-tooling/schemas/dw.schema.json で公開されています(B2C DX VS Code 拡張機能が自動的に適用します)。エディターでの検証と補完には、dw.json に "$schema" として追加してください。

フィールドの完全なリファレンスについては、設定ガイド(b2c docs read guide-configuration)を参照してください。

認証

B2C Commerce インスタンスとやり取りするコマンドのほとんどでは、認証が必要です。CLI は複数の方法に対応しています。

  • クライアント認証情報(API クライアント): dw.json または環境変数で clientId と clientSecret を設定します。自動化や CI での使用では、これがデフォルトです。
  • アカウントでサインイン: OAuth 対応コマンドで --user-auth を使用すると、ブラウザーで Account Manager アカウントにサインインできます。
  • ベーシック認証: WebDAV 操作用に username と password を設定します。
  • 状態を保持するセッション: b2c auth login を使用すると、サインイン状態を維持できます。ほかのクライアントが設定されていない場合、後続のコマンドでは保存されたセッションが再利用されます。クライアント認証情報ではセッションは不要です(各コマンドがトークンを取得します)。b2c auth client は sfcc-ci client:auth との互換性のために用意されています。
  • サーバーのみ: コードのアップロード、ログ、webdav コマンドにはホスト名だけが必要です。要求されたときに、ユーザーはブラウザーで Account Manager アカウントにサインインします。
  • 現在の設定を確認: b2c setup inspect ではインスタンスの認証方法を確認でき、b2c auth status ではサインイン中のユーザーを確認できます。
--user-auth フラグ

多くのコマンドでは --user-auth に対応しており、クライアント認証情報の代わりにアカウントでサインインできます。SCAPI Admin API はまだこれに対応していません(リリース 26.8)。--user-auth を指定すると、OCAPI にも対応しているコマンドではそれが使用されますが、--api-backend scapi はエラーになります。次のような場合に便利です。

  • clientSecret を設定していない場合
  • ユーザーレベルの権限(Account Manager の管理者ロールなど)が必要な場合
  • 対話的に作業する場合
# Sign in with your account
b2c sandbox list --user-auth
b2c am users list --user-auth
b2c auth token --user-auth

コーディングエージェントは、ブラウザーを開ける環境であれば --user-auth を使用できます。--auth-methods と併用しないでください。

プロキシ経由で実行する場合: ブラウザーから localhost:8080 にアクセスできない場合(コンテナー内での実行やリバースプロキシ経由での実行など)は、SFCC_REDIRECT_URI にプロキシ URL を設定してください。ローカル OAuth サーバーは引き続きデフォルトのポート(または SFCC_OAUTH_LOCAL_PORT)で待ち受けますが、Account Manager に送信されるリダイレクト URI にはプロキシ URL が使用されます。Account Manager の API クライアントで、リダイレクト URL にプロキシ URL を追加してください。

テナント ID と組織 ID

B2C Commerce では、関連する 2 つの識別子を使用します。

  • テナント ID — 短縮形式(例:zzxy_prd または zzxy-prd)
  • 組織 ID — f_ecom_ プレフィックスが付いた SCAPI 形式(例:f_ecom_zzxy_prd)

CLI はこれらの形式を自動的に正規化し、相互に変換します。設定またはフラグにはどちらの形式でも指定できます。変換は CLI が処理します。また、ホスト名からテナント ID を抽出します(例:zzxy-prd.dx.commercecloud.salesforce.com は zzxy_prd として解決されます)。

dw.json または環境変数では、tenantId 設定キーを使用してください。CLI は SCAPI 呼び出し時に f_ecom_ プレフィックスを追加します。

設定の確認

b2c setup inspect を使用すると、解決された設定を表示し、各値の取得元を確認できます。名前付きインスタンス設定を管理するには、b2c setup instance コマンドを使用します。

注: b2c setup config は b2c setup inspect のエイリアスとして機能します。

使用する場面

次のような場合は、b2c setup inspect を使用してください。

  • 使用されている設定ファイルを確認する
  • 環境変数が正しく読み込まれているか確認する
  • 認証情報が読み込まれていることを確認して、認証エラーをデバッグする
  • 認証情報の取得元の優先順位(dw.json、環境変数、プラグイン)を確認する
  • ホスト名の不一致による保護機能の問題を特定する
  • MRT API キーが ~/.mobify から読み込まれていることを確認する
現在の設定を表示する
# Display resolved configuration (sensitive values masked by default)
b2c setup inspect

# View configuration for a specific instance from dw.json
b2c setup inspect -i staging

# View configuration with a specific config file
b2c setup inspect --config /path/to/dw.json
機密性の高い値をデバッグする
# Reveal secrets only when the user explicitly requests their values
b2c setup inspect --unmask
スクリプト用の JSON 出力
# Output as JSON for parsing in scripts
b2c setup inspect --json

# Pretty-print with jq
b2c setup inspect --json | jq '.config'

# Check which sources are loaded
b2c setup inspect --json | jq '.sources'

1 つの値を変更する

b2c setup set、get、unset を使用して、1 つの値を変更できます。これらのコマンドは、値をすでに設定しているファイル(dw.json のエントリまたはプロジェクトの .env)を自動的に選択します。該当するファイルがない場合は、選択したインスタンスの dw.json エントリを使用します。値がシェル環境、~/.mobify、またはその他の読み取り専用のソースから取得されている場合や、インスタンスが選択されていない場合は、書き込みを行わずに処理を拒否します。

b2c setup set scapi-schemas=./scapi-schemas
b2c setup set code-version version2 -i staging
b2c setup set safety '{"level":"NO_DELETE"}'   # non-string keys take JSON
b2c setup get code-version                      # value on stdout, source on stderr
b2c setup get client-secret                     # masked; --unmask only when asked
b2c setup unset code-version

キーには dw.json の名前を使用します。値は dw.json のスキーマに照らして検証されます。

IDE 連携

b2c setup ide を使用すると、解決された CLI 設定を使用する IDE ツールを設定し、Script API の IntelliSense を有効にできます。

# Vendor Script API TypeScript definitions + jsconfig.json (plain VS Code, WebStorm, etc.)
b2c setup ide vscode-types

# Print the TS Server plugin path for LSP-based editors (Neovim, Helix, Zed, ...)
b2c setup ide tsserver-plugin --json

B2C DX VS Code 拡張機能は設定不要です。実行時に同じ TypeScript Server プラグインを注入します。

OpenShell サンドボックス(ベータ版)

b2c setup openshell は、解決された設定を使用して NVIDIA OpenShell サンドボックスを作成します。シークレットは OpenShell ゲートウェイ上に保持され、サンドボックスがアクセスできるのは、使用中の B2C ホストに限られます。適用される Safety Mode のレベルは設定値に従い、未設定の場合は NONE になります。Safety Mode のルールは引き継がれます。実行中のゲートウェイがある openshell CLI と Docker が必要です。

# Sandbox for the active instance at the configured Safety Mode level
b2c setup openshell

# Read-only sandbox
b2c setup openshell --safety-level READ_ONLY

# Allow writes but not deletes; include the MCP server
b2c setup openshell --safety-level NO_DELETE --mcp

# Write the policy, profiles, Dockerfile, and setup.sh without running anything
b2c setup openshell --dry-run

# Run a command in the sandbox
openshell sandbox exec -n b2c-<instance> -- b2c code list

安全レベルや Safety Mode のルールを変更した場合、または .openshell/<sandbox>/policy.yaml を編集した場合は、再実行して変更を適用してください(編集済みのポリシーは保持されます。--force を指定すると再生成されます)。シークレットや設定を変更した場合、またはサンドボックス設定が変更されたという警告が表示された場合は、--recreate を使用してください。再作成すると、アップロード済みファイルと接続済みのエージェントプロバイダーが削除されます。ホストを追加するには --allow-host を使用してください。サンドボックスで使用できるのはクライアント認証情報のみです(ブラウザーでのログインはできません)。エージェントのサンドボックス化ガイド(b2c docs read guide-agent-sandboxing)を参照してください。

インスタンスの管理

設定済みのインスタンスを一覧表示する
# Show all instances from dw.json
b2c setup instance list

# Output as JSON
b2c setup instance list --json
新しいインスタンスを作成する
# Interactive mode - prompts for all values
b2c setup instance create staging

# With hostname
b2c setup instance create staging --hostname staging.example.com

# Create and set as active
b2c setup instance create staging --hostname staging.example.com --active

# Optionally save SCAPI coordinates and use SCAPI-first active-version detection
b2c setup instance create staging --hostname staging.example.com \
  --short-code kv7kzm78 --tenant-id zzxy_prd --api-backend auto

# Non-interactive mode (for scripts)
b2c setup instance create staging \
  --hostname staging.example.com \
  --username admin \
  --password <access-key> \
  --force

create は現在のディレクトリ(または --config / --project-directory の指定先、ローカルに dw.json がない場合はグローバルのデフォルト)に dw.json を書き込み、パスを表示します。別のディレクトリから実行したコマンドでは、--config または --project-directory を指定するか、b2c setup default-config set <path> でファイルを登録しない限り、このファイルは認識されません。既存の名前に対して create は失敗します。既存のインスタンスを変更するには、b2c setup set <key> <value> --instance <name> を使用します。

shortCode と tenantId は省略可能です。ステートレス OAuth でこれらが指定されている場合、セットアップではまず SCAPI を試して、アクティブなコードバージョンを検出します。それ以外の場合、auto は OCAPI を使用します。検出に失敗すると、対話型セットアップで理由が表示され、コードバージョンを手動で入力できます。

アクティブなインスタンスを切り替える
# Set staging as the default instance
b2c setup instance set-active staging

# Now commands use staging by default
b2c code list  # Uses staging
インスタンスを削除する
# Remove with confirmation prompt
b2c setup instance remove staging

# Remove without confirmation
b2c setup instance remove staging --force

出力について

setup inspect コマンドは、カテゴリ別に整理された設定を表示します。

  • インスタンス:hostname、webdavHostname(設定されている場合)、codeVersion
  • 認証(Basic):username、password(WebDAV 用)
  • 認証(OAuth):clientId、clientSecret、scopes、authMethods(設定されている場合)、accountManagerHost(設定されている場合)
  • 認証(JWT Bearer):jwtCertPath、jwtKeyPath、jwtPassphrase(設定されている場合のみ表示)
  • 認証(SLAS):slasClientId、slasClientSecret(設定されている場合のみ表示)
  • TLS/mTLS:certificate、certificatePassphrase、selfSigned(設定されている場合のみ表示)
  • SCAPI:shortCode、tenantId
  • Commerce Intelligence(CIP):cipHost(設定されている場合のみ表示)
  • オンデマンドサンドボックス(ODS):sandboxApiHost、realm(設定されている場合のみ表示)
  • Managed Runtime(MRT):mrtProject、mrtEnvironment、mrtApiKey、mrtOrigin(設定されている場合)
  • プロジェクト:設定済みのデプロイ、コンテンツ、ドキュメントのデフォルト値
  • メタデータ:siteId、instanceName、projectDirectory(設定されている場合のみ表示)
  • 安全性:有効なレベル、レベルに基づく確認、ソース列、インスタンス、グローバルファイル、環境設定を統合した後のルール数(設定されている場合のみ表示)。SafetyFile は Sources に記載されているグローバルファイルを示し、SafetyEnv は環境設定を示します。ルールを優先順に番号付きで表示し、それぞれのソースを確認するには --verbose を、完全な有効安全性オブジェクトを表示するには --json を使用します。レベルによる確認が無効でも、明示的な確認ルールは引き続き適用されます。
  • Sources:読み込まれたすべての設定ソースの一覧

各値には、角括弧内にソースが表示されます。

  • [DwJsonSource] — プライマリの dw.json ファイルの値
  • [default] — 共有デフォルトの dw.json の値(Sources テーブルでは DwJsonSource (default) と表示)
  • [EnvSource] — SFCC_* 環境変数の値
  • [MobifySource] — ~/.mobify ファイルの値
  • [PackageJsonSource] — package.json の b2c キーの値
  • プラグインが提供するソース名(例:認証情報プラグイン)

設定の優先順位

値は次の優先順位(高い順)で解決されます。

  1. CLI フラグと環境変数(シェル、次に env ファイルの SFCC_*/MRT_*)
  2. プラグインソース(高優先度)
  3. dw.json ファイル
  4. Storefront Next の変数(フォールバック)
  5. ~/.mobify ファイル(MRT API キーのみ)
  6. プラグインソース(低優先度)
  7. package.json の b2c キー

問題の調査時は、ソース列を確認して、どの設定が優先されているかを把握してください。

package.json のプロジェクト既定値

機密情報ではない、プロジェクト内で共有する既定値は b2c キーの下に設定します。siteId は、設定済みのサイトコンテキストを受け入れるコマンドの既定のサイト/チャネルを指定します。コンテンツ関連のコマンドでは、contentLibrary を設定します。また、それがサイトのプライベートライブラリである場合は、同じ ID を siteLibrary: true として指定します。

{
  "b2c": {
    "siteId": "RefArch",
    "contentLibrary": "RefArch",
    "libraries": [{"id": "RefArch", "siteLibrary": true}]
  }
}

この設定により、b2c content list と b2c content export homepage は、--library や --site-library を指定しなくても、既定で RefArch サイトのプライベートライブラリを使用します。CLI フラグ、環境変数、dw.json は、引き続き優先度の高い上書き設定として適用されます。認証情報、パスワード、シークレット、ホスト名、その他の環境固有の接続データは package.json に含めないでください。

トラブルシューティング

まず必ず b2c setup inspect を実行してください。解決された値とその取得元が表示されます。マスキングは有効のままにし、スクリプトでは --json を使用してください。値が想定した場所にない場合は、取得元の列で、どのファイル/環境変数/プラグインが優先されたか確認できます。

コマンドで「credentials required」または「client-id is required」と表示される
  • CLI が clientId/clientSecret を見つけられていません。b2c setup inspect を実行し、OAuth セクションを確認してください。
  • 選択されている設定パスと取得元を確認してください。既定では、プロジェクト内の dw.json、次に共有グローバル既定値が使われ、親ディレクトリは検索されません。
  • SFCC_CLIENT_ID/SFCC_CLIENT_SECRET 環境変数が、別の場所で定義されているだけでなく、この シェルでエクスポートされていることを確認してください。
  • 認証情報のグループは一体として扱われます。clientId がある取得元から、clientSecret が優先度の低い取得元から取得される場合、優先度の低い方のシークレットは破棄されます。両方を同じ取得元から指定するか、優先度の高い上書き設定を使用してください。
コマンドの対象インスタンスが間違っている
  • b2c setup inspect で、解決されたホスト名とその取得元を確認できます。
  • 複数インスタンスを含む dw.json では、既定で active: true の設定が使用されます。コマンドごとに -i <name> で上書きするか、b2c setup instance set-active <name> で既定値を変更してください。
  • SFCC_SERVER(または任意の環境変数)は dw.json より優先されます。dw.json を優先する場合は、環境変数の設定を解除してください。
  • ホスト名の不一致に対する保護: --server(または SFCC_SERVER)に dw.json のホスト名と異なる値を渡すと、インスタンス間で認証情報が混在するのを防ぐため、CLI は dw.json の他の値をすべて無視します。ホスト名を一致させるか、必要な認証情報をすべて明示的に渡してください。
dw.json が読み込まれない
  • b2c setup inspect の Sources ブロックを確認してください。DwJsonSource が一覧にない場合、ファイルが見つかっていません。
  • CLI は選択されたプロジェクトディレクトリを使用し、親ディレクトリは検索しません。プロジェクトのルートから実行するか、SFCC_PROJECT_DIRECTORY を設定するか、--config /path/to/dw.json を渡してください。
  • ファイルが有効な JSON であることを確認してください(解析エラーが発生した場合、エラーを表示せずに読み込みがスキップされます)。
  • フィールド名の大文字小文字は区別されません。clientId と client-id のどちらも使用できます。上記の「dw.json のキーの大文字小文字」を参照してください。
SCAPI/OCAPI 呼び出しで 401/403 エラーが発生する
  • 解決された clientId/clientSecret が、対象 インスタンスのものであることを確認してください(Account Manager ではテナントごとに API クライアントのスコープが設定されます)。
  • OAuth スコープを確認してください。必要なスコープはコマンドによって異なります(例:sfcc.cdn-zones、sfcc.orders)。--auth-scope を渡すか、SFCC_OAUTH_SCOPES を設定してください。
  • SCAPI コマンドでは、tenantId が正しいことを確認してください。テナント ID ではアンダースコア(zzxy_001)、ホスト名ではハイフン(zzxy-001)を使用します。CLI は両者の形式を相互に正規化しますが、テナント ID が間違っていると 403 エラーが発生します。
tenantId/shortCode が見つからない
  • これらは dw.json、SFCC_TENANT_ID/SFCC_SHORTCODE、または package.json から解決されます。どの取得元から値が提供されたかを確認するには、b2c setup inspect を実行してください。
  • サンドボックスでは、ホスト名の - を _ に置き換えて tenantId が導出されます:zzxy-001.dx... → zzxy_001。逆の場合も同様です。サンドボックスのテナント ID があり、ホスト名がない場合は、ホスト名が導出されます。
MRT コマンドで「API key required」と表示される
  • MRT_API_KEY(または SFCC_MRT_API_KEY)環境変数、あるいは ~/.mobify ファイル({ "api_key": "..." })を使用してください。
  • --cloud-origin <host> を使用すると、CLI は通常の ~/.mobify ではなく、~/.mobify--<host> を検索します。
setup inspect でマスクされる機密値
  • デフォルトでは、シークレットは admi...REDACTED と表示されます。通常のトラブルシューティングでは、マスキングを有効にしたままにしてください。--unmask は、ユーザーがシークレット値を明示的に要求した場合にのみ使用してください。
値が見つからない場合
  • フィールドに - と表示される場合、その値を提供しているソースはありません。dw.json のスペル、環境変数の有無、プラグインの出力を確認してください。clientSecret、password、mrtApiKey は package.json では設定できないため、dw.json または環境変数を使用してください。
優先されるソースが違う場合
  • 上記の「How the CLI Discovers Configuration」にある優先順位リストを確認してください。よくある想定外の動作として、環境変数(または .env ファイル)は dw.json より優先され、ホスト名の異なる SFCC_SERVER を含む環境ファイルがあると、dw.json のエントリは完全にスキップされます。Storefront Next の変数が dw.json より優先されることはありません。
それでも解決しない場合

2 つの出力を比較してください。

b2c setup inspect --json > expected.json   # in a known-good shell
# ... run the failing command in the broken shell, then:
b2c setup inspect --json > actual.json
diff expected.json actual.json

差分を見ると、欠落または上書きされたフィールドが通常はすぐにわかります。

Admin OAuth トークンの取得

b2c auth token を使用すると、Account Manager の認証情報用の Admin OAuth アクセストークンを取得できます(OCAPI と Admin API 用)。API のテスト、スクリプト作成、CI/CD パイプラインで役立ちます。

# Get access token (outputs raw token to stdout)
b2c auth token

# Get token with browser-based auth
b2c auth token --user-auth

# Get token with specific scopes (accepts multiple: repeat --auth-scope or comma-separate)
b2c auth token --auth-scope sfcc.orders --auth-scope sfcc.products
b2c auth token --auth-scope "sfcc.orders,sfcc.products"

# Get token as JSON (includes expiration and scopes)
b2c auth token --json

# Use in curl for OCAPI calls
curl -H "Authorization: Bearer $(b2c auth token)" \
  "https://your-instance.dx.commercecloud.salesforce.com/s/-/dw/data/v24_1/sites"

トークンは、設定(dw.json または環境変数)の clientId と clientSecret を使用して取得されます。シークレットが設定されていない場合、または --user-auth を使用した場合は、ブラウザーでアカウントにサインインします。

注: このコマンドは、OCAPI/Admin API 用の admin トークンを返します。shopper トークン(SLAS)については、b2c-slas スキルを参照してください。

SCAPI Admin API(システムまたはカスタム)を呼び出す場合 トークンには、テナントスコープ SALESFORCE_COMMERCE_API:<tenant_id> に加えて、API 固有のスコープが必要です。b2c auth token は(b2c scapi custom status などの SCAPI サブコマンドとは異なり)テナントスコープを自動で追加しないため、明示的に指定してください。

b2c auth token \
  --auth-scope "SALESFORCE_COMMERCE_API:zzpq_013" \
  --auth-scope sfcc.orders --auth-scope sfcc.products.rw

詳細は、b2c:b2c-scapi-admin と b2c:b2c-custom-api-development のスキルを参照してください。

その他のコマンド

b2c setup --help を参照すると、AI エージェントのスキルをインストールする b2c setup skills など、その他のセットアップコマンドを確認できます。

コメント