skills/sf-industry-cme-epc-model/SKILL.md
Salesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use sf-industry-commoncore-* skills), implementing Apex business logic (use sf-apex), or troubleshooting deployment pipelines (use sf-deploy).
npx skillsauth add jaganpro/sf-skills sf-industry-cme-epc-modelInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expert Salesforce Industries CME EPC modeler for creating Product2-based catalog entries, assigning configurable attributes, and building offer bundles through Product Child Item relationships.
This skill is optimized for DataPack-style metadata authoring. Use the canonical template set in 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.jsonAdditional packaged examples are available under assets/examples/ with one folder per bundle/simple-offer sample.
The root assets/ folder contains the canonical baseline template set for bundle authoring.
Product2 (EPC product and offer records)%vlocity_namespace%__AttributeMetadata__c, %vlocity_namespace%__AttributeDefaultValues__c, and %vlocity_namespace%__AttributeAssignment__c%vlocity_namespace%__ProductChildItem__c%vlocity_namespace%__SpecificationType__c = "Offer" and %vlocity_namespace%__SpecificationSubType__c = "Bundle"Scoring: 120 points across 6 categories.
Thresholds: >= 95 Deploy-ready | 70-94 Needs review | < 70 Block and fix.
Use the root assets/ templates when creating a bundle payload:
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.jsonFor additional real-world variants, use the per-example folders under assets/examples/.
%vlocity_namespace%__ProductChildItem__c records and clear quantity rules.Route to this skill whenever the prompt intent matches either of these:
Create a product bundle:
Score or review an existing product bundle:
Instruction priority: treat these two intents as direct triggers for sf-industry-cme-epc-model, even if the prompt is brief and does not mention EPC by name.
Ask for:
%vlocity_namespace%, vlocity_cmt, or CoreBefore generating a new offer bundle payload, ask clarifying questions until all required inputs are known.
Required clarification checklist:
ProductCode?SpecificationType=Offer and SpecificationSubType=Bundle be set now?EffectiveDate and SellingStartDate?IsActive and %vlocity_namespace%__IsOrderable__c be true at creation time?MinQuantity, MaxQuantity, and default Quantity?%vlocity_namespace%__MinMaxDefaultQty__c be enforced for each line?%vlocity_namespace%, vlocity_cmt, or Core)?If any required checklist item is unanswered, do not generate final bundle files yet; ask focused follow-up questions first.
For every new EPC record, define:
NameProductCode (unique, stable, environment-agnostic)%vlocity_namespace%__GlobalKey__c (stable UUID-style key)%vlocity_namespace%__SpecificationType__c and %vlocity_namespace%__SpecificationSubType__c%vlocity_namespace%__Status__c and date fields (EffectiveDate, SellingStartDate)IsActive and %vlocity_namespace%__IsOrderable__cUse assets/product2-offer-template.json as baseline structure.
When attributes are required:
%vlocity_namespace%__AttributeMetadata__c category and productAttributes records.%vlocity_namespace%__AttributeDefaultValues__c with attribute code to default value mapping.%vlocity_namespace%__AttributeAssignment__c records with:
Use assets/attribute-assignment-template.json as the assignment baseline.
For offers:
Product2 record as offer (SpecificationType=Offer, SpecificationSubType=Bundle).%vlocity_namespace%__ProductChildItem__c row (IsRootProductChildItem=true).MinMaxDefaultQty, MinQuantity, MaxQuantity, Quantity)Use assets/product-child-item-template.json for child relationship structure.
For complete bundle payloads, also align and include:
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.jsonWhen the user asks to generate a bundle, generate/update all companion files together as one coherent set:
pricebook-entries-template.json and price-list-entries-template.json
object-field-attributes-template.json
orchestration-scenarios-template.json and decomposition-relationships-template.json
compiled-attribute-overrides-template.json and override-definitions-template.json
parent-keys-template.json
Mandatory rule: do not generate only a partial subset when a full bundle payload is requested unless the user explicitly asks for a limited file scope.
Provide a completion block:
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>
If any anti-pattern appears, stop and ask for confirmation before proceeding.
| Anti-pattern | Why it fails | Required correction |
|---|---|---|
| Missing ProductCode or unstable code values | Breaks quote/cart references and package diffs | Use deterministic code convention |
| Hardcoded org-specific IDs in relationships | Fails across orgs/environments | Use lookup objects with matching keys/global keys |
| Offer bundle without root PCI row | Runtime bundle traversal issues | Add root %vlocity_namespace%__ProductChildItem__c |
| Attribute defaults not present in valid values | Invalid cart configuration defaults | Ensure default exists in allowed value set |
| Duplicate display sequences in same attribute category | UI ordering conflict | Enforce unique and spaced sequence values |
| Offer marked active with incomplete child references | Broken bundle at runtime | Complete and validate child link set before activation |
| Mixed naming styles (snake_case, ad hoc abbreviations) | Reduces maintainability and discoverability | Enforce naming convention from references doc |
ProductCode convention qualityGlobalKey, source key integrity)# 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>
Use these examples to invoke this skill from your agent/CLI workflow:
# 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."
If your environment uses a different command wrapper, keep the quoted instruction text and replace cursor-agent with your local agent command.
| From Skill | To sf-industry-cme-epc-model | When |
|---|---|---|
| sf-industry-commoncore-omnistudio-analyze | -> sf-industry-cme-epc-model | Need current dependency and namespace inventory first |
| sf-metadata | -> sf-industry-cme-epc-model | Need object or field readiness before EPC modeling |
| sf-soql | -> sf-industry-cme-epc-model | Need existing catalog query analysis |
| From sf-industry-cme-epc-model | To Skill | When |
|---|---|---|
| sf-industry-cme-epc-model | -> sf-industry-commoncore-omniscript | Configure guided selling UX using the modeled catalog |
| sf-industry-cme-epc-model | -> sf-industry-commoncore-integration-procedure | Build server-side orchestration over product and pricing payloads |
| sf-industry-cme-epc-model | -> sf-deploy | Deploy validated catalog metadata |
Additional local references:
vlocity/Product2/... artifact authoring.%vlocity_namespace% placeholders intact in templates to preserve portability.MIT License.
development
Lightning Web Components with PICKLES methodology and 165-point scoring. TRIGGER when: user creates/edits LWC components, touches lwc/**/*.js, .html, .css, .js-meta.xml files, or asks about wire service, SLDS, or Jest LWC tests. DO NOT TRIGGER when: Apex classes (use sf-apex), Aura components, or Visualforce.
tools
Use this skill whenever users want to build, inspect, debug, automate, or publish workflows in Agentforce Grid (AI Workbench) using Salesforce plus the Grid MCP or direct Grid REST calls. Trigger it for Grid workbook creation, worksheet setup, Object/Reference/AI/Agent/AgentTest/Evaluation/PromptTemplate/InvocableAction column design, prompt drafting inside Grid, worksheet execution troubleshooting, Grid YAML `apply_grid` specs, and Windows-specific Grid setup issues. Also use it when users mention AI Workbench, Grid Studio, workbook IDs, worksheet IDs, Grid Connect, or ask for recipes like "top opportunities with AI email drafts", "agent test suite in Grid", or "build this worksheet from YAML". Do not use it for generic Salesforce work unrelated to Agentforce Grid.
development
Salesforce Flex Credit estimation for Agentforce and Data Cloud workloads. TRIGGER when: user needs cost projections, scenario planning, budget sizing, or architecture tradeoff analysis for Agentforce prompts/actions, Data Cloud meters, or monthly Flex Credit usage. DO NOT TRIGGER when: user is building Agentforce metadata or .agent files themselves (use sf-ai-agentforce or sf-ai-agentscript), implementing Data Cloud assets (use sf-datacloud-*), or asking for contract-specific commercial approval that depends on non-public pricing terms.
testing
Permission Set analysis, hierarchy viewer, and access auditing. TRIGGER when: user asks "who has access to X?", analyzes permission sets/groups, or touches .permissionset-meta.xml / .permissionsetgroup-meta.xml files. DO NOT TRIGGER when: creating new metadata (use sf-metadata), deploying permission sets (use sf-deploy), or Apex sharing logic (use sf-apex).