sf-industry-cme-epc-model について
Salesforce Industries CME EPC のモデリング担当者向けに、Product2 製品やオファーバンドルの作成、属性設定、関連メタデータ生成を行うスキルです。DataPack テンプレートを使い、120 点の基準で検証します。
主な機能
- 01EPC の Product2 製品とオファーを作成
- 02属性、デフォルト値、有効値をモデル化
- 03Product Child Item でオファーを構成
- 04価格やオーケストレーションのメタデータを生成
- 05DataPack の整合性を確認して採点
活用シーン
- 01テンプレートからオファーバンドルの DataPack を生成
- 02製品属性とデフォルト選択肢を設定
- 03数量ルールを付けて子製品を構成
- 04既存バンドルのメタデータリスクをレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jaganpro/ sf-skills --skill sf-industry-cme-epc-modelインストール後、Claude Code で/sf-industry-cme-epc-modelを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/attribute-assignment-template.jsoncompiled-attribute-overrides-template.jsondecomposition-relationships-template.jsonassets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.jsonBusiness-Internet-Premium-FTTC_CompiledAttributeOverrides.jsonBusiness-Internet-Premium-FTTC_DataPack.jsonBusiness-Internet-Premium-FTTC_DecompositionRelationships.jsonBusiness-Internet-Premium-FTTC_ObjectFieldAttributes.jsonBusiness-Internet-Premium-FTTC_OrchestrationScenarios.jsonBusiness-Internet-Premium-FTTC_OverrideDefinitions.jsonBusiness-Internet-Premium-FTTC_ParentKeys.jsonBusiness-Internet-Premium-FTTC_PricebookEntries.jsonBusiness-Internet-Premium-FTTC_PriceListEntries.jsonBusiness-Internet-Premium-FTTC_ProductChildItems.jsonBusiness-Internet-Premium-FTTC_RuleAssignments.jsonassets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.jsonBusiness-Internet-Pro-VPL_DataPack.jsonBusiness-Internet-Pro-VPL_DecompositionRelationships.jsonBusiness-Internet-Pro-VPL_ObjectFieldAttributes.jsonBusiness-Internet-Pro-VPL_OrchestrationScenarios.jsonBusiness-Internet-Pro-VPL_ParentKeys.jsonBusiness-Internet-Pro-VPL_PricebookEntries.jsonBusiness-Internet-Pro-VPL_PriceListEntries.jsonBusiness-Internet-Pro-VPL_ProductChildItems.jsonassets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.jsonSamsung-Galaxy-S22-Bundle_DataPack.jsonSamsung-Galaxy-S22-Bundle_DecompositionRelationships.jsonSamsung-Galaxy-S22-Bundle_ObjectFieldAttributes.jsonSamsung-Galaxy-S22-Bundle_OrchestrationScenarios.jsonSamsung-Galaxy-S22-Bundle_ParentKeys.json詳細
sf-industry-cme-epc-model:CME EPC 製品とオファーのモデリング
Salesforce Industries CME EPC のエキスパートモデラーとして、Product2 ベースのカタログエントリの作成、設定可能な属性の割り当て、Product Child Item リレーションシップを使用したオファーバンドルの構築を行います。
このスキルは、DataPack 形式のメタデータ作成に最適化されています。assets/ にある標準テンプレートセットを使用してください。
assets/product2-offer-template.jsonassets/attribute-assignment-template.jsonassets/product-child-item-template.jsonassets/pricebook-entries-template.jsonassets/price-list-entries-template.jsonassets/object-field-attributes-template.jsonassets/orchestration-scenarios-template.jsonassets/decomposition-relationships-template.jsonassets/compiled-attribute-overrides-template.jsonassets/override-definitions-template.jsonassets/parent-keys-template.json
追加のパッケージ済みサンプルは assets/examples/ にあり、バンドル/単純なオファーのサンプルごとにフォルダーが分かれています。
ルートの assets/ フォルダーには、バンドル作成用の標準ベースラインテンプレートセットが含まれています。
クイックリファレンス
- 主要オブジェクト:
Product2(EPC 製品およびオファーのレコード) - 属性データ:
%vlocity_namespace%__AttributeMetadata__c、%vlocity_namespace%__AttributeDefaultValues__c、および%vlocity_namespace%__AttributeAssignment__c - オファーバンドルの構成:
%vlocity_namespace%__ProductChildItem__c - オファーマーカー:
%vlocity_namespace%__SpecificationType__c = "Offer"および%vlocity_namespace%__SpecificationSubType__c = "Bundle" - 付随するバンドル成果物:価格表エントリ、価格リストエントリ、オブジェクトフィールド属性、オーケストレーションシナリオ、分解リレーションシップ、コンパイル済み属性オーバーライド、オーバーライド定義、および親キー
スコア:6 つのカテゴリで合計 120 点。
しきい値:>= 95 デプロイ可能 | 70-94 要レビュー | < 70 ブロックして修正。
アセットテンプレートセット
バンドルのペイロードを作成する際は、ルートの assets/ テンプレートを使用してください。
product2-offer-template.jsonattribute-assignment-template.jsonproduct-child-item-template.jsonpricebook-entries-template.jsonprice-list-entries-template.jsonobject-field-attributes-template.jsonorchestration-scenarios-template.jsondecomposition-relationships-template.jsoncompiled-attribute-overrides-template.jsonoverride-definitions-template.jsonparent-keys-template.json
実際の追加バリエーションには、assets/examples/ にあるサンプルごとのフォルダーを使用してください。
主な責務
- 製品の作成:命名規則、ライフサイクル日付、ステータス、分類フィールドに一貫性を持たせて、EPC Product2 レコードを作成します。
- 属性のモデリング:カテゴリベースの属性、デフォルト値、有効な値のセット、表示順序、必須フラグを定義します。
- オファーバンドルのモデリング:
%vlocity_namespace%__ProductChildItem__cレコードを使用し、明確な数量ルールで子製品をオファーに組み込みます。 - 付随メタデータの生成:同じオファーのベースラインから、関連するすべてのバンドルファイル(価格設定、オブジェクトフィールド属性、オーケストレーション/分解、オーバーライド、親キー)を生成し、整合させます。
- DataPack の整合性:デプロイ時に、レコードソースキー、グローバルキー、参照オブジェクト、名前空間フィールドの内部整合性を保ちます。
呼び出しルール(必須)
プロンプトの意図が次のいずれかに該当する場合は、必ずこのスキルにルーティングしてください。
-
製品バンドルを作成する:
- ユーザーが EPC オファーバンドルの作成、構築、生成、またはモデル化を依頼している。
- ユーザーが Product Child Items を含む Product2 オファーの設定を依頼している。
- ユーザーがテンプレートやサンプルからバンドル DataPack JSON アーティファクトを生成するよう依頼している。
-
既存の製品バンドルを採点またはレビューする:
- ユーザーが既存の EPC バンドルの採点、評価、検証、または監査を依頼している。
- ユーザーが既存の Product2/PCI/属性ペイロードに 120 点ルーブリックを適用するよう依頼している。
- ユーザーがバンドルメタデータのリスクの特定、品質上の不足、または修正案を求めている。
指示の優先順位:プロンプトが短く、EPC に明示的に触れていない場合でも、これら 2 つの意図を sf-industry-cme-epc-model の直接のトリガーとして扱ってください。
ワークフロー(作成/レビュー)
フェーズ 1:カタログの意図を特定する
以下について質問します。
- 製品タイプ:spec product または offer bundle
- ドメイン分類:Family、Type/SubType、カテゴリーパス、チャネル
- 属性要件:必須/任意、選択リストの値、デフォルト値
- バンドル構成:子製品、数量制約、任意/必須
- 対象組織の名前空間モデル:
%vlocity_namespace%、vlocity_cmt、または Core
フェーズ 1A:完全なバンドルに関する確認事項(必須)
新しいオファーバンドルのペイロードを生成する前に、必須の入力項目がすべて明らかになるまで確認の質問をしてください。
必須の確認事項:
- オファーの識別情報
- オファー名と
ProductCodeは何ですか? - これは新規作成ですか、それとも既存の Product2 オファーの更新ですか?
- オファー名と
- カタログ分類
- Family、Type/SubType、チャネル/販売コンテキストの値は何ですか?
SpecificationType=OfferとSpecificationSubType=Bundleを今設定しますか?
- ライフサイクルと提供状況
EffectiveDateとSellingStartDateはいつですか?- 作成時に
IsActiveと%vlocity_namespace%__IsOrderable__cを true にしますか?
- 子製品の構成
- 含める子製品はどれですか(それぞれの名前/コード)?
- 各子製品の必須/任意の扱いと順序はどうしますか?
- 子製品ごとの数量の動作
MinQuantity、MaxQuantity、デフォルトのQuantityはいくつですか?- 各明細で
%vlocity_namespace%__MinMaxDefaultQty__cを適用しますか?
- 属性モデル
- 必須属性と任意属性はどれですか?
- 有効な値、デフォルト値、表示タイプ、表示順序は何ですか?
- 価格設定と関連アーティファクト
- 価格表と価格リストのエントリーを今生成しますか?
- オーケストレーション/分解/オーバーライド/親キーのファイルを同じ依頼に含めますか?
- 名前空間とキー設定
- どの名前空間規則を使用しますか(
%vlocity_namespace%、vlocity_cmt、または Core)? - 維持すべき既存のグローバルキー/ソースキーはありますか?
- どの名前空間規則を使用しますか(
必須の確認事項に未回答の項目がある場合、最終的なバンドルファイルはまだ生成せず、まず要点を絞った追加質問をしてください。
フェーズ 2:Product2 の基盤を構築する
新しい EPC レコードごとに、以下を定義します。
NameProductCode(一意で安定しており、環境に依存しない)%vlocity_namespace%__GlobalKey__c(安定した UUID 形式のキー)%vlocity_namespace%__SpecificationType__cおよび%vlocity_namespace%__SpecificationSubType__c%vlocity_namespace%__Status__cおよび日付フィールド(EffectiveDate、SellingStartDate)IsActiveおよび%vlocity_namespace%__IsOrderable__c
基本構造として assets/product2-offer-template.json を使用します。
フェーズ 3:属性を追加する
属性が必要な場合:
%vlocity_namespace%__AttributeMetadata__cのカテゴリレコードとproductAttributesレコードを設定します。- 属性コードとデフォルト値のマッピングを
%vlocity_namespace%__AttributeDefaultValues__cに設定します。 - 次の項目を含む
%vlocity_namespace%__AttributeAssignment__cレコードを作成します。- カテゴリへの関連付け
- 属性への関連付け
- UI の表示形式(ドロップダウンなど)
- 有効な値とデフォルト値のマーカー
割り当てのベースラインとして assets/attribute-assignment-template.json を使用します。
フェーズ 4:オファーバンドルを構築する
オファーの場合:
- 親の
Product2レコードをオファーとして維持します(SpecificationType=Offer、SpecificationSubType=Bundle)。 - ルート
%vlocity_namespace%__ProductChildItem__c行を作成します(IsRootProductChildItem=true)。 - 各コンポーネントに対して、次の項目を含む子行を追加します。
- 親と子への参照
- 順序と行番号
- 最小/最大/デフォルト数量の動作(
MinMaxDefaultQty、MinQuantity、MaxQuantity、Quantity)
- 継承された動作またはデフォルトの動作と異なる場合にのみ、上書き行を使用します。
子との関係の構造には assets/product-child-item-template.json を使用します。
完全なバンドルペイロードには、次のファイルも整合させて含めます。
assets/pricebook-entries-template.jsonassets/price-list-entries-template.jsonassets/object-field-attributes-template.jsonassets/orchestration-scenarios-template.jsonassets/decomposition-relationships-template.jsonassets/compiled-attribute-overrides-template.jsonassets/override-definitions-template.jsonassets/parent-keys-template.json
フェーズ 4B:関連メタデータファイルを生成する
ユーザーがバンドルの生成を依頼した場合、関連ファイルをすべて、一貫性のある一式として同時に生成または更新します。
pricebook-entries-template.jsonとprice-list-entries-template.json- Product2 の GlobalKey/ProductCode 参照を親オファーと整合させます。
object-field-attributes-template.json- オブジェクトクラスの参照とフィールドマッピングを、同じオファーモデルと整合させます。
orchestration-scenarios-template.jsonとdecomposition-relationships-template.json- 分解およびオーケストレーションの成果物を、バンドルの子項目と整合させます。
compiled-attribute-overrides-template.jsonとoverride-definitions-template.json- 上書きキーと参照を、属性メタデータおよび割り当てと整合させます。
parent-keys-template.json- 親との関連付け値を、生成された成果物のキーと同期させます。
必須ルール:完全なバンドルペイロードが依頼された場合、ユーザーが明示的に対象ファイルを限定していない限り、一部のファイルだけを生成してはなりません。
フェーズ 5:検証と引き渡し
完了ブロックを提示します。
EPC Model Complete: <Name>
Type: <Spec Product|Offer Bundle>
ProductCode: <code>
Attributes: <count>
Bundle Children: <count>
Companion Metadata Files: <count generated>
Validation Score: <score>/120
Risks: <none|list>
生成時のガードレール(必須)
アンチパターンが見つかった場合は、処理を中止し、続行する前に確認を求めます。
| アンチパターン | 問題となる理由 | 必要な修正 |
|---|---|---|
ProductCode の欠落、または不安定なコード値 | 見積もり/カートの参照とパッケージの差分に支障が出ます | 決定的なコード規則を使用します |
| 関連付けに組織固有の ID をハードコードする | 組織や環境をまたいで機能しません | キー/グローバルキーが一致する検索オブジェクトを使用します |
| ルート PCI 行のないオファーバンドル | 実行時のバンドル走査に問題が発生します | ルート %vlocity_namespace%__ProductChildItem__c を追加します |
| 有効な値に属性のデフォルト値が含まれていない | 無効なカート設定のデフォルト値になります | デフォルト値が許可値セットに含まれていることを確認します |
| 同じ属性カテゴリ内で表示順序が重複している | UI の並び順が競合します | 一意で間隔のある順序値を適用します |
| 子参照が不完全な状態でオファーを有効にする | 実行時にバンドルが破損します | 有効化する前に子リンク一式を完成させ、検証します |
命名スタイルが混在している(snake_case、独自の略語など) | 保守性と見つけやすさが低下します | 参照ドキュメントの命名規則を適用します |
スコアリングモデル(120 点)
1) カタログの識別と命名(20)
- 製品名の明確さと一意性
ProductCodeの規約の品質- Type/SubType/Family の整合性
- 安定したキー設定(
GlobalKey、ソースキーの整合性)
2) EPC 製品構造(20)
- 必須の Product2 フィールドと EPC フィールドが存在する
- ライフサイクルの日付とステータスが整合している
- 注文可能フラグと有効フラグが整合している
- レコードタイプと分類が一貫している
3) 属性モデリング(25)
- カテゴリと属性のグループ化の品質
- 有効な値とデフォルト値が整合している
- 必須/読み取り専用/フィルター可能の意味付け
- 表示順序と UX の一貫性
4) オファーバンドルの構成(25)
- ルート PCI が存在し、正しく設定されている
- 子参照と順序が整合している
- 数量制約が正しく設定されている
- オプション/必須の意味が最小値/最大値/デフォルト値に反映されている
5) DataPack の整合性(15)
- 名前空間のプレースホルダーが正しい
- ルックアップオブジェクトのキーが整合している
- 環境固有で壊れやすいフィールドがない
6) ドキュメントと引き継ぎ(15)
- モデリングの意図が明確に説明されている
- テストのチェックリストが含まれている
- リスクと前提条件が明示されている
CLI と検証コマンド
# Query candidate EPC products
sf data query -q "SELECT Id,Name,ProductCode,Family,IsActive FROM Product2 ORDER BY LastModifiedDate DESC" -o <org>
# Query Product Child Items for an offer
sf data query -q "SELECT Id,Name,%vlocity_namespace%__ParentProductName__c,%vlocity_namespace%__ChildProductName__c,%vlocity_namespace%__MinMaxDefaultQty__c FROM %vlocity_namespace%__ProductChildItem__c WHERE %vlocity_namespace%__ParentProductName__c='<Offer Name>'" -o <org>
# Retrieve Product2 metadata package members (as applicable to project format)
sf project retrieve start -m Product2:<DeveloperNameOrName> -o <org>
# Validate deployment in dry-run mode
sf project deploy start -x manifest/package.xml --dry-run -o <org>
スキル呼び出しコマンドの例
エージェント/CLI のワークフローからこのスキルを呼び出すには、次の例を使用してください。
# Create a new EPC offer bundle with full companion metadata
cursor-agent "Create a Product2 offer bundle named Business Internet Plus with ProductCode BIZ-INT-PLUS-01, 3 child products, and generate all companion DataPack JSON files from the assets templates."
# Add configurable attributes to an existing EPC Product2 record
cursor-agent "Update Product2 Business Internet Essential with attribute metadata/defaults/assignments for Bandwidth, ContractTerm, and StaticIPCount, including valid values and defaults."
# Build ProductChildItem relationships for an offer
cursor-agent "Create root and child %vlocity_namespace%__ProductChildItem__c records for offer Business Internet Essential VPL with min/max/default quantity rules."
# Review an existing DataPack for EPC modeling quality
cursor-agent "Review the Product2 bundle JSON files under skills/sf-industry-cme-epc-model/examples/business-internet-plus-bundle/, score against the 120-point rubric, and return risks plus required fixes."
# Convert a spec product into a bundle-ready offer payload
cursor-agent "Transform Product2 Dedicated Fiber 1G from spec product to offer bundle (SpecificationType=Offer, SpecificationSubType=Bundle) and generate aligned PCI + pricing artifacts."
環境で別のコマンドラッパーを使用している場合は、引用符で囲まれた指示文はそのままにして、cursor-agent をローカルのエージェントコマンドに置き換えてください。
スキル間の連携
| From Skill | To sf-industry-cme-epc-model | When |
|---|---|---|
| sf-industry-commoncore-omnistudio-analyze | -> sf-industry-cme-epc-model | 先に現在の依存関係と名前空間の一覧を確認する必要がある場合 |
| sf-metadata | -> sf-industry-cme-epc-model | EPC モデリングの前にオブジェクトまたはフィールドの準備状況を確認する必要がある場合 |
| sf-soql | -> sf-industry-cme-epc-model | 既存のカタログクエリを分析する必要がある場合 |
From sf-industry-cme-epc-model | To Skill | When |
|---|---|---|
| sf-industry-cme-epc-model | -> sf-industry-commoncore-omniscript | モデル化したカタログを使用して、ガイド付き販売の UX を設定する場合 |
| sf-industry-cme-epc-model | -> sf-industry-commoncore-integration-procedure | 製品と価格のペイロードを使用したサーバー側のオーケストレーションを構築する場合 |
| sf-industry-cme-epc-model | -> sf-deploy | 検証済みのカタログメタデータをデプロイする場合 |
外部参考資料
- EPC の概要:Salesforce ヘルプ - Enterprise Product Catalog
- EPC の命名規則:Salesforce ヘルプ - EPC Naming Conventions
- EPC 製品カタログのデータモデル:Salesforce ヘルプ - Product Catalog ERD
追加のローカル参考資料:
注意事項
- このスキルは意図的に DataPack を優先し、
vlocity/Product2/...アーティファクトの作成に最適化されています。 - 移植性を維持するため、テンプレート内の
%vlocity_namespace%プレースホルダーはそのままにしてください。 - まず再利用可能な仕様製品を作成し、その後、子リレーションシップを使用してオファーを組み立ててください。
ライセンス
MIT License.