@salesforce/afv-skills 1.8.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/package.json +1 -1
  2. package/skills/activating-datacloud/CREDITS.md +5 -0
  3. package/skills/activating-datacloud/README.md +39 -0
  4. package/skills/activating-datacloud/SKILL.md +118 -0
  5. package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
  6. package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
  7. package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
  8. package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
  9. package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
  10. package/skills/building-omnistudio-callable-apex/README.md +80 -0
  11. package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
  12. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
  13. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
  14. package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
  15. package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
  16. package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
  17. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
  18. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
  19. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
  20. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
  21. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
  22. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
  23. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
  24. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
  25. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
  26. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
  27. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
  28. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
  29. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
  30. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
  31. package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
  32. package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
  33. package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
  34. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
  35. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
  36. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
  37. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
  38. package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
  39. package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
  40. package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
  41. package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
  42. package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
  43. package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
  44. package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
  45. package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
  46. package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
  47. package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
  48. package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
  49. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
  50. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
  51. package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
  52. package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
  53. package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
  54. package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
  55. package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
  56. package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
  57. package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
  58. package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
  59. package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
  60. package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
  61. package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
  62. package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
  63. package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
  64. package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
  65. package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
  66. package/skills/building-sf-integrations/CREDITS.md +5 -0
  67. package/skills/building-sf-integrations/README.md +95 -0
  68. package/skills/building-sf-integrations/SKILL.md +192 -0
  69. package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
  70. package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
  71. package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
  72. package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
  73. package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
  74. package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
  75. package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
  76. package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
  77. package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
  78. package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
  79. package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
  80. package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
  81. package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
  82. package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
  83. package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
  84. package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
  85. package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
  86. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
  87. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
  88. package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
  89. package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
  90. package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
  91. package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
  92. package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
  93. package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
  94. package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
  95. package/skills/building-sf-integrations/references/cli-reference.md +94 -0
  96. package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
  97. package/skills/building-sf-integrations/references/event-patterns.md +838 -0
  98. package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
  99. package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
  100. package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
  101. package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
  102. package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
  103. package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
  104. package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
  105. package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
  106. package/skills/building-sf-integrations/scripts/README.md +100 -0
  107. package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
  108. package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
  109. package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
  110. package/skills/configuring-connected-apps/CREDITS.md +3 -0
  111. package/skills/configuring-connected-apps/README.md +99 -0
  112. package/skills/configuring-connected-apps/SKILL.md +224 -0
  113. package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
  114. package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
  115. package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
  116. package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
  117. package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
  118. package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
  119. package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
  120. package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
  121. package/skills/configuring-connected-apps/references/example-usage.md +256 -0
  122. package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
  123. package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
  124. package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
  125. package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
  126. package/skills/connecting-datacloud/CREDITS.md +5 -0
  127. package/skills/connecting-datacloud/README.md +59 -0
  128. package/skills/connecting-datacloud/SKILL.md +155 -0
  129. package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
  130. package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
  131. package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
  132. package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
  133. package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
  134. package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
  135. package/skills/debugging-apex-logs/CREDITS.md +22 -0
  136. package/skills/debugging-apex-logs/README.md +74 -0
  137. package/skills/debugging-apex-logs/SKILL.md +172 -0
  138. package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
  139. package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
  140. package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
  141. package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
  142. package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
  143. package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
  144. package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
  145. package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
  146. package/skills/debugging-apex-logs/references/common-issues.md +68 -0
  147. package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
  148. package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
  149. package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
  150. package/skills/deploying-metadata/CREDITS.md +25 -0
  151. package/skills/deploying-metadata/README.md +104 -0
  152. package/skills/deploying-metadata/SKILL.md +214 -0
  153. package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
  154. package/skills/deploying-metadata/assets/package.xml +121 -0
  155. package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
  156. package/skills/deploying-metadata/references/deploy.sh +73 -0
  157. package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
  158. package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
  159. package/skills/deploying-metadata/references/orchestration.md +183 -0
  160. package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
  161. package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
  162. package/skills/deploying-omnistudio-datapacks/README.md +88 -0
  163. package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
  164. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
  165. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
  166. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
  167. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
  168. package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
  169. package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
  170. package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
  171. package/skills/developing-agentforce/references/actions-reference.md +8 -8
  172. package/skills/fetching-salesforce-docs/README.md +66 -0
  173. package/skills/fetching-salesforce-docs/SKILL.md +209 -0
  174. package/skills/fetching-salesforce-docs/requirements.txt +2 -0
  175. package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
  176. package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
  177. package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
  178. package/skills/generating-apex/CREDITS.md +1 -26
  179. package/skills/generating-apex-test/CREDITS.md +2 -27
  180. package/skills/generating-lwc-components/CREDITS.md +5 -0
  181. package/skills/generating-lwc-components/README.md +126 -0
  182. package/skills/generating-lwc-components/SKILL.md +191 -0
  183. package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
  184. package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
  185. package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
  186. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
  187. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
  188. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
  189. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
  190. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
  191. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
  192. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
  193. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
  194. package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
  195. package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
  196. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
  197. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
  198. package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
  199. package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
  200. package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
  201. package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
  202. package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
  203. package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
  204. package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
  205. package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
  206. package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
  207. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
  208. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
  209. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
  210. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
  211. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
  212. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
  213. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
  214. package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
  215. package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
  216. package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
  217. package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
  218. package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
  219. package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
  220. package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
  221. package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
  222. package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
  223. package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
  224. package/skills/generating-lwc-components/references/advanced-features.md +108 -0
  225. package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
  226. package/skills/generating-lwc-components/references/cli-commands.md +545 -0
  227. package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
  228. package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
  229. package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
  230. package/skills/generating-lwc-components/references/lms-guide.md +860 -0
  231. package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
  232. package/skills/generating-lwc-components/references/performance-guide.md +861 -0
  233. package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
  234. package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
  235. package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
  236. package/skills/generating-lwc-components/references/state-management.md +642 -0
  237. package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
  238. package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
  239. package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
  240. package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
  241. package/skills/generating-mermaid-diagrams/README.md +114 -0
  242. package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
  243. package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
  244. package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
  245. package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
  246. package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
  247. package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
  248. package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
  249. package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
  250. package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
  251. package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
  252. package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
  253. package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
  254. package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
  255. package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
  256. package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
  257. package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
  258. package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
  259. package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
  260. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
  261. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
  262. package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
  263. package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
  264. package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
  265. package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
  266. package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
  267. package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
  268. package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
  269. package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
  270. package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
  271. package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
  272. package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
  273. package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
  274. package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
  275. package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
  276. package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
  277. package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
  278. package/skills/generating-visual-diagrams/CREDITS.md +80 -0
  279. package/skills/generating-visual-diagrams/README.md +83 -0
  280. package/skills/generating-visual-diagrams/SKILL.md +208 -0
  281. package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
  282. package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
  283. package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
  284. package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
  285. package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
  286. package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
  287. package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
  288. package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
  289. package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
  290. package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
  291. package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
  292. package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
  293. package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
  294. package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
  295. package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
  296. package/skills/handling-sf-data/CREDITS.md +5 -0
  297. package/skills/handling-sf-data/README.md +112 -0
  298. package/skills/handling-sf-data/SKILL.md +235 -0
  299. package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
  300. package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
  301. package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
  302. package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
  303. package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
  304. package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
  305. package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
  306. package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
  307. package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
  308. package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
  309. package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
  310. package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
  311. package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
  312. package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
  313. package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
  314. package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
  315. package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
  316. package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
  317. package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
  318. package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
  319. package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
  320. package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
  321. package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
  322. package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
  323. package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
  324. package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
  325. package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
  326. package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
  327. package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
  328. package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
  329. package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
  330. package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
  331. package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
  332. package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
  333. package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
  334. package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
  335. package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
  336. package/skills/handling-sf-data/references/orchestration.md +174 -0
  337. package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
  338. package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
  339. package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
  340. package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
  341. package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
  342. package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
  343. package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
  344. package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
  345. package/skills/harmonizing-datacloud/CREDITS.md +3 -0
  346. package/skills/harmonizing-datacloud/README.md +31 -0
  347. package/skills/harmonizing-datacloud/SKILL.md +117 -0
  348. package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
  349. package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
  350. package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
  351. package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
  352. package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
  353. package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
  354. package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
  355. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
  356. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
  357. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
  358. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
  359. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
  360. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
  361. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
  362. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
  363. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
  364. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
  365. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
  366. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
  367. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
  368. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
  369. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
  370. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
  371. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
  372. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
  373. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
  374. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
  375. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
  376. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
  377. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
  378. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
  379. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
  380. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
  381. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
  382. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
  383. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
  384. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
  385. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
  386. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
  387. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
  388. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
  389. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
  390. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
  391. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
  392. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
  393. package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
  394. package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
  395. package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
  396. package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
  397. package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
  398. package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
  399. package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
  400. package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
  401. package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
  402. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
  403. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
  404. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
  405. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
  406. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
  407. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
  408. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
  409. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
  410. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
  411. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
  412. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
  413. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
  414. package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
  415. package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
  416. package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
  417. package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
  418. package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
  419. package/skills/orchestrating-datacloud/CREDITS.md +15 -0
  420. package/skills/orchestrating-datacloud/README.md +129 -0
  421. package/skills/orchestrating-datacloud/SKILL.md +236 -0
  422. package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
  423. package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
  424. package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
  425. package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
  426. package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
  427. package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
  428. package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
  429. package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
  430. package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
  431. package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
  432. package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
  433. package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
  434. package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
  435. package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
  436. package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
  437. package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
  438. package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
  439. package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
  440. package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
  441. package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
  442. package/skills/preparing-datacloud/CREDITS.md +7 -0
  443. package/skills/preparing-datacloud/README.md +51 -0
  444. package/skills/preparing-datacloud/SKILL.md +191 -0
  445. package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
  446. package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
  447. package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
  448. package/skills/querying-soql/CREDITS.md +21 -0
  449. package/skills/querying-soql/README.md +41 -0
  450. package/skills/querying-soql/SKILL.md +143 -0
  451. package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
  452. package/skills/querying-soql/assets/basic-queries.soql +188 -0
  453. package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
  454. package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
  455. package/skills/querying-soql/assets/relationship-queries.soql +203 -0
  456. package/skills/querying-soql/assets/selector-class.cls +219 -0
  457. package/skills/querying-soql/references/anti-patterns.md +348 -0
  458. package/skills/querying-soql/references/cli-commands.md +358 -0
  459. package/skills/querying-soql/references/field-coverage-rules.md +514 -0
  460. package/skills/querying-soql/references/query-optimization.md +142 -0
  461. package/skills/querying-soql/references/selector-patterns.md +479 -0
  462. package/skills/querying-soql/references/soql-reference.md +227 -0
  463. package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
  464. package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
  465. package/skills/retrieving-datacloud/CREDITS.md +7 -0
  466. package/skills/retrieving-datacloud/README.md +44 -0
  467. package/skills/retrieving-datacloud/SKILL.md +120 -0
  468. package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
  469. package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
  470. package/skills/running-apex-tests/CREDITS.md +22 -0
  471. package/skills/running-apex-tests/README.md +94 -0
  472. package/skills/running-apex-tests/SKILL.md +158 -0
  473. package/skills/running-apex-tests/assets/basic-test.cls +169 -0
  474. package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
  475. package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
  476. package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
  477. package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
  478. package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
  479. package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
  480. package/skills/running-apex-tests/references/cli-commands.md +289 -0
  481. package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
  482. package/skills/running-apex-tests/references/performance-optimization.md +283 -0
  483. package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
  484. package/skills/running-apex-tests/references/test-patterns.md +154 -0
  485. package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
  486. package/skills/segmenting-datacloud/CREDITS.md +3 -0
  487. package/skills/segmenting-datacloud/README.md +36 -0
  488. package/skills/segmenting-datacloud/SKILL.md +115 -0
@@ -0,0 +1,379 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ sf-data Validation Module
4
+ =========================
5
+
6
+ Validates data operation files against the 130-point scoring system:
7
+ - Query Efficiency (25 points)
8
+ - Bulk Safety (25 points)
9
+ - Data Integrity (20 points)
10
+ - Security & FLS (20 points)
11
+ - Test Patterns (15 points)
12
+ - Cleanup & Isolation (15 points)
13
+ - Documentation (10 points)
14
+ """
15
+
16
+ import re
17
+ from pathlib import Path
18
+ from typing import Dict, List, Any, Optional
19
+
20
+ class DataOperationValidator:
21
+ """Validates data operation files."""
22
+
23
+ # Scoring categories
24
+ CATEGORIES = {
25
+ 'query_efficiency': {
26
+ 'name': 'Query Efficiency',
27
+ 'max': 25,
28
+ 'score': 25,
29
+ 'issues': []
30
+ },
31
+ 'bulk_safety': {
32
+ 'name': 'Bulk Safety',
33
+ 'max': 25,
34
+ 'score': 25,
35
+ 'issues': []
36
+ },
37
+ 'data_integrity': {
38
+ 'name': 'Data Integrity',
39
+ 'max': 20,
40
+ 'score': 20,
41
+ 'issues': []
42
+ },
43
+ 'security_fls': {
44
+ 'name': 'Security & FLS',
45
+ 'max': 20,
46
+ 'score': 20,
47
+ 'issues': []
48
+ },
49
+ 'test_patterns': {
50
+ 'name': 'Test Patterns',
51
+ 'max': 15,
52
+ 'score': 15,
53
+ 'issues': []
54
+ },
55
+ 'cleanup_isolation': {
56
+ 'name': 'Cleanup & Isolation',
57
+ 'max': 15,
58
+ 'score': 15,
59
+ 'issues': []
60
+ },
61
+ 'documentation': {
62
+ 'name': 'Documentation',
63
+ 'max': 10,
64
+ 'score': 10,
65
+ 'issues': []
66
+ }
67
+ }
68
+
69
+ def __init__(self, file_path: str):
70
+ self.file_path = Path(file_path)
71
+ self.content = ''
72
+ self.file_type = ''
73
+ self.issues: List[Dict[str, Any]] = []
74
+ self.recommendations: List[str] = []
75
+ self.categories = self._init_categories()
76
+
77
+ def _init_categories(self) -> Dict[str, Dict[str, Any]]:
78
+ """Initialize fresh category scores."""
79
+ import copy
80
+ return copy.deepcopy(self.CATEGORIES)
81
+
82
+ def validate(self) -> Optional[Dict[str, Any]]:
83
+ """Run validation and return results."""
84
+ if not self.file_path.exists():
85
+ return None
86
+
87
+ try:
88
+ with open(self.file_path, 'r', encoding='utf-8') as f:
89
+ self.content = f.read()
90
+ except Exception:
91
+ return None
92
+
93
+ # Determine file type
94
+ self.file_type = self.file_path.suffix.lower()
95
+
96
+ # Run type-specific validation
97
+ if self.file_type == '.apex':
98
+ self._validate_apex()
99
+ elif self.file_type == '.soql':
100
+ self._validate_soql()
101
+ elif self.file_type == '.csv':
102
+ self._validate_csv()
103
+ elif self.file_type == '.json':
104
+ self._validate_json()
105
+ else:
106
+ return None
107
+
108
+ # Calculate total score
109
+ total_score = sum(cat['score'] for cat in self.categories.values())
110
+ max_score = sum(cat['max'] for cat in self.categories.values())
111
+
112
+ return {
113
+ 'score': total_score,
114
+ 'max_score': max_score,
115
+ 'categories': {cat['name']: {'score': cat['score'], 'max': cat['max']}
116
+ for cat in self.categories.values()},
117
+ 'issues': self.issues,
118
+ 'recommendations': self.recommendations
119
+ }
120
+
121
+ def _validate_apex(self):
122
+ """Validate Apex data operation file."""
123
+ content = self.content
124
+
125
+ # Query Efficiency (25 points)
126
+ self._check_query_efficiency(content)
127
+
128
+ # Bulk Safety (25 points)
129
+ self._check_bulk_safety(content)
130
+
131
+ # Data Integrity (20 points)
132
+ self._check_data_integrity(content)
133
+
134
+ # Security & FLS (20 points)
135
+ self._check_security(content)
136
+
137
+ # Test Patterns (15 points)
138
+ self._check_test_patterns(content)
139
+
140
+ # Cleanup & Isolation (15 points)
141
+ self._check_cleanup(content)
142
+
143
+ # Documentation (10 points)
144
+ self._check_documentation(content)
145
+
146
+ def _validate_soql(self):
147
+ """Validate SOQL query file."""
148
+ content = self.content
149
+
150
+ # Import SOQL validator
151
+ try:
152
+ from soql_validator import SOQLValidator
153
+ soql_validator = SOQLValidator(content)
154
+ soql_result = soql_validator.validate()
155
+
156
+ # Apply SOQL-specific scoring
157
+ if soql_result.get('has_where_clause', False):
158
+ pass # Good
159
+ else:
160
+ self._deduct('query_efficiency', 5, 'Missing WHERE clause')
161
+
162
+ if soql_result.get('has_limit', False):
163
+ pass # Good
164
+ else:
165
+ self._deduct('query_efficiency', 3, 'Missing LIMIT clause')
166
+
167
+ if soql_result.get('has_hardcoded_ids', False):
168
+ self._deduct('query_efficiency', 5, 'Hardcoded record IDs found')
169
+
170
+ except ImportError:
171
+ # Basic SOQL validation
172
+ if 'WHERE' not in content.upper():
173
+ self._deduct('query_efficiency', 5, 'Missing WHERE clause')
174
+ if 'LIMIT' not in content.upper():
175
+ self._deduct('query_efficiency', 3, 'Missing LIMIT clause')
176
+
177
+ # Documentation check for SOQL
178
+ if not content.strip().startswith('--'):
179
+ self._deduct('documentation', 5, 'Missing SOQL documentation/comments')
180
+
181
+ def _validate_csv(self):
182
+ """Validate CSV import file."""
183
+ lines = self.content.strip().split('\n')
184
+
185
+ if len(lines) < 2:
186
+ self._deduct('data_integrity', 10, 'CSV file has no data rows')
187
+ return
188
+
189
+ # Check for header row
190
+ header = lines[0]
191
+ if not header or ',' not in header:
192
+ self._deduct('data_integrity', 5, 'CSV missing proper header row')
193
+
194
+ # Check for consistent column count
195
+ expected_cols = len(header.split(','))
196
+ for i, line in enumerate(lines[1:], 2):
197
+ if line.strip() and len(line.split(',')) != expected_cols:
198
+ self._deduct('data_integrity', 2, f'Inconsistent column count on line {i}')
199
+ break
200
+
201
+ # Check for potential PII patterns
202
+ self._check_csv_security(self.content)
203
+
204
+ def _validate_json(self):
205
+ """Validate JSON tree import file."""
206
+ import json as json_lib
207
+
208
+ try:
209
+ data = json_lib.loads(self.content)
210
+ except json_lib.JSONDecodeError as e:
211
+ self._deduct('data_integrity', 20, f'Invalid JSON: {str(e)}')
212
+ return
213
+
214
+ # Check for proper sObject tree format
215
+ if 'records' not in data:
216
+ self._deduct('data_integrity', 10, 'Missing "records" array')
217
+ return
218
+
219
+ records = data.get('records', [])
220
+
221
+ for i, record in enumerate(records):
222
+ if 'attributes' not in record:
223
+ self._deduct('data_integrity', 5, f'Record {i+1} missing "attributes"')
224
+ else:
225
+ attrs = record['attributes']
226
+ if 'type' not in attrs:
227
+ self._deduct('data_integrity', 3, f'Record {i+1} missing object type')
228
+ if 'referenceId' not in attrs:
229
+ self._deduct('data_integrity', 2, f'Record {i+1} missing referenceId')
230
+
231
+ def _check_query_efficiency(self, content: str):
232
+ """Check for query efficiency issues."""
233
+ # Check for queries in loops
234
+ if re.search(r'for\s*\([^)]*\)\s*\{[^}]*\[SELECT', content, re.IGNORECASE | re.DOTALL):
235
+ self._deduct('query_efficiency', 10, 'SOQL query inside for loop (N+1 pattern)')
236
+
237
+ # Check for hardcoded IDs
238
+ if re.search(r"'[a-zA-Z0-9]{15,18}'", content):
239
+ self._deduct('query_efficiency', 5, 'Hardcoded Salesforce ID found')
240
+
241
+ # Check for SELECT * equivalent (all fields)
242
+ if re.search(r'SELECT\s+\*', content, re.IGNORECASE):
243
+ self._deduct('query_efficiency', 5, 'SELECT * is not valid in SOQL')
244
+
245
+ def _check_bulk_safety(self, content: str):
246
+ """Check for bulk safety issues."""
247
+ # Check for DML in loops
248
+ dml_in_loop = re.search(
249
+ r'for\s*\([^)]*\)\s*\{[^}]*(insert|update|delete|upsert)\s+',
250
+ content, re.IGNORECASE | re.DOTALL
251
+ )
252
+ if dml_in_loop:
253
+ self._deduct('bulk_safety', 10, 'DML operation inside for loop')
254
+
255
+ # Check for single-record operations when bulk would be better
256
+ single_record_pattern = re.search(
257
+ r'(insert|update|delete)\s+\w+\s*;(?!\s*//\s*single)',
258
+ content, re.IGNORECASE
259
+ )
260
+ # This is a soft check - single records are sometimes intentional
261
+
262
+ # Check for list-based DML (good pattern)
263
+ if re.search(r'(insert|update|delete)\s+\w+List', content, re.IGNORECASE):
264
+ pass # Good - using list-based DML
265
+ elif re.search(r'(insert|update|delete)\s+new\s+List<', content, re.IGNORECASE):
266
+ pass # Good - using list
267
+
268
+ def _check_data_integrity(self, content: str):
269
+ """Check for data integrity issues."""
270
+ # Check for required field handling
271
+ if 'required' in content.lower() or 'mandatory' in content.lower():
272
+ pass # Awareness of required fields
273
+
274
+ # Check for null checks
275
+ if re.search(r'!=\s*null|!= null', content):
276
+ pass # Good - null checking
277
+
278
+ def _check_security(self, content: str):
279
+ """Check for security issues."""
280
+ # Check for PII patterns
281
+ pii_patterns = [
282
+ (r'\b\d{3}-\d{2}-\d{4}\b', 'SSN pattern detected'),
283
+ (r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b', 'Credit card pattern detected'),
284
+ (r'\b[A-Za-z0-9._%+-]+@(gmail|yahoo|hotmail|outlook)\.(com|net|org)\b',
285
+ 'Personal email domain in test data')
286
+ ]
287
+
288
+ for pattern, message in pii_patterns:
289
+ if re.search(pattern, content):
290
+ self._deduct('security_fls', 10, message)
291
+
292
+ # Check for WITH USER_MODE usage (good practice)
293
+ if 'WITH USER_MODE' in content.upper():
294
+ pass # Good - respecting FLS
295
+
296
+ def _check_test_patterns(self, content: str):
297
+ """Check for good test data patterns."""
298
+ # Check for bulk record creation (200+)
299
+ bulk_patterns = [
300
+ r'(\d{3,})\s*[;,)]', # Numbers 100+
301
+ r'count\s*[=:]\s*(\d{3,})',
302
+ r'recordCount\s*[=:]\s*(\d{3,})'
303
+ ]
304
+
305
+ has_bulk = False
306
+ for pattern in bulk_patterns:
307
+ match = re.search(pattern, content)
308
+ if match:
309
+ try:
310
+ num = int(match.group(1))
311
+ if num >= 200:
312
+ has_bulk = True
313
+ except ValueError:
314
+ pass
315
+
316
+ # Check for edge case handling
317
+ edge_cases = ['null', 'empty', 'boundary', 'special character', 'unicode']
318
+ has_edge_cases = any(ec in content.lower() for ec in edge_cases)
319
+
320
+ if not has_bulk and 'bulk' not in self.file_path.stem.lower():
321
+ self._deduct('test_patterns', 5, 'Consider testing with 200+ records for bulkification')
322
+
323
+ def _check_cleanup(self, content: str):
324
+ """Check for cleanup and isolation patterns."""
325
+ # Check for cleanup provisions
326
+ cleanup_patterns = ['cleanup', 'delete', 'rollback', 'Savepoint', 'Database.rollback']
327
+ has_cleanup = any(pattern.lower() in content.lower() for pattern in cleanup_patterns)
328
+
329
+ if not has_cleanup:
330
+ self._deduct('cleanup_isolation', 5, 'No cleanup mechanism found')
331
+ self.recommendations.append('Add cleanup script or savepoint for test isolation')
332
+
333
+ # Check for ID tracking
334
+ if re.search(r'Set<Id>|List<Id>|createdIds|recordIds', content):
335
+ pass # Good - tracking created IDs
336
+
337
+ def _check_documentation(self, content: str):
338
+ """Check for documentation."""
339
+ # Check for file header comment
340
+ if not (content.strip().startswith('/*') or
341
+ content.strip().startswith('//') or
342
+ content.strip().startswith('/**')):
343
+ self._deduct('documentation', 3, 'Missing file header documentation')
344
+
345
+ # Check for method documentation
346
+ if re.search(r'/\*\*[\s\S]*?\*/', content):
347
+ pass # Has JSDoc-style comments
348
+ elif re.search(r'//.*description|//.*purpose|//.*usage', content, re.IGNORECASE):
349
+ pass # Has inline documentation
350
+ else:
351
+ self._deduct('documentation', 2, 'Consider adding method/section documentation')
352
+
353
+ def _check_csv_security(self, content: str):
354
+ """Check CSV content for security issues."""
355
+ # Check for PII patterns in CSV
356
+ lines = content.split('\n')
357
+ for i, line in enumerate(lines, 1):
358
+ # SSN pattern
359
+ if re.search(r'\b\d{3}-\d{2}-\d{4}\b', line):
360
+ self._deduct('security_fls', 10, f'SSN pattern on line {i}')
361
+ break
362
+ # Credit card pattern
363
+ if re.search(r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b', line):
364
+ self._deduct('security_fls', 10, f'Credit card pattern on line {i}')
365
+ break
366
+
367
+ def _deduct(self, category: str, points: int, message: str):
368
+ """Deduct points from a category and record the issue."""
369
+ if category in self.categories:
370
+ current = self.categories[category]['score']
371
+ self.categories[category]['score'] = max(0, current - points)
372
+ self.categories[category]['issues'].append(message)
373
+
374
+ self.issues.append({
375
+ 'category': self.categories.get(category, {}).get('name', category),
376
+ 'severity': 'error' if points >= 10 else 'warning',
377
+ 'message': message,
378
+ 'points': points
379
+ })
@@ -0,0 +1,3 @@
1
+ # Credits & Acknowledgments
2
+
3
+ This skill is part of the `*-datacloud` family of skills covering the Data Cloud lifecycle: ingestion, harmonization, segmentation, and retrieval.
@@ -0,0 +1,31 @@
1
+ # harmonizing-datacloud
2
+
3
+ Schema harmonization and unification workflows for Salesforce Data Cloud.
4
+
5
+ ## Use this skill for
6
+
7
+ - DMOs (Data Model Objects)
8
+ - Field mappings
9
+ - Relationships
10
+ - Identity resolution
11
+ - Unified profiles
12
+ - Data graphs
13
+ - Universal ID lookup
14
+
15
+ ## Example requests
16
+
17
+ ```text
18
+ "Map this DLO to ssot__Individual__dlm"
19
+ "Help me create an identity resolution ruleset"
20
+ "Why are unified profiles not appearing?"
21
+ "Show me the DMO fields before I create mappings"
22
+ ```
23
+
24
+ ## Common commands
25
+
26
+ ```bash
27
+ sf data360 dmo list --all -o myorg 2>/dev/null
28
+ sf data360 query describe -o myorg --table ssot__Individual__dlm 2>/dev/null
29
+ sf data360 dmo mapping-list -o myorg --source Contact_Home__dll --target ssot__Individual__dlm 2>/dev/null
30
+ sf data360 identity-resolution list -o myorg 2>/dev/null
31
+ ```
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: harmonizing-datacloud
3
+ description: "Salesforce Data Cloud Harmonize phase. Use this skill when the user works with DMOs, mappings, relationships, identity resolution, unified profiles, data graphs, or universal IDs. TRIGGER when: user works with DMOs, mappings, relationships, identity resolution, unified profiles, data graphs, or universal IDs. DO NOT TRIGGER when: the task is only about streams/DLOs (use preparing-datacloud), segments/insights (use segmenting-datacloud), retrieval/search (use retrieving-datacloud), or STDM/session tracing (use observing-agentforce)."
4
+ license: MIT
5
+ compatibility: "Requires an external community sf data360 CLI plugin and a Data Cloud-enabled org"
6
+ metadata:
7
+ version: "1.0"
8
+ ---
9
+
10
+ # harmonizing-datacloud: Data Cloud Harmonize Phase
11
+
12
+ Use this skill when the user needs **schema harmonization and unification work**: DMOs, field mappings, relationships, identity resolution, unified profiles, data graphs, or universal ID lookup.
13
+
14
+ ## When This Skill Owns the Task
15
+
16
+ Use `harmonizing-datacloud` when the work involves:
17
+ - `sf data360 dmo *`
18
+ - `sf data360 identity-resolution *`
19
+ - `sf data360 data-graph *`
20
+ - `sf data360 profile *`
21
+ - `sf data360 universal-id lookup`
22
+
23
+ Delegate elsewhere when the user is:
24
+ - still ingesting streams or building DLOs → [preparing-datacloud](../preparing-datacloud/SKILL.md)
25
+ - working on segment logic or calculated insights → [segmenting-datacloud](../segmenting-datacloud/SKILL.md)
26
+ - running SQL, describe, or search-index workflows → [retrieving-datacloud](../retrieving-datacloud/SKILL.md)
27
+
28
+ ---
29
+
30
+ ## Required Context to Gather First
31
+
32
+ Ask for or infer:
33
+ - source DLO and target DMO names
34
+ - whether the task is schema creation, mapping, IR, or graph-related
35
+ - target org alias
36
+ - whether a ruleset already exists
37
+ - the user’s desired unified entity model
38
+
39
+ ---
40
+
41
+ ## Core Operating Rules
42
+
43
+ - Inspect DMO schema before creating mappings.
44
+ - Run the shared readiness classifier before mutating harmonization assets: `node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase harmonize --json`.
45
+ - Prefer `dmo list --all` when browsing the catalog, but use first-page `dmo list` for fast readiness checks.
46
+ - Use `query describe` or `dmo get --json` instead of inventing unsupported describe flows.
47
+ - Treat identity resolution runs as asynchronous and verify results after execution.
48
+ - Keep unified-profile work separate from STDM/session tracing work.
49
+
50
+ ---
51
+
52
+ ## Recommended Workflow
53
+
54
+ ### 1. Classify readiness for harmonize work
55
+ ```bash
56
+ node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase harmonize --json
57
+ ```
58
+
59
+ ### 2. Inspect the catalog
60
+ ```bash
61
+ sf data360 dmo list --all -o <org> 2>/dev/null
62
+ sf data360 identity-resolution list -o <org> 2>/dev/null
63
+ ```
64
+
65
+ ### 3. Inspect schema before mapping
66
+ ```bash
67
+ sf data360 query describe -o <org> --table ssot__Individual__dlm 2>/dev/null
68
+ sf data360 dmo get -o <org> --name ssot__Individual__dlm --json 2>/dev/null
69
+ ```
70
+
71
+ ### 4. Create or review mappings intentionally
72
+ ```bash
73
+ sf data360 dmo mapping-list -o <org> --source Contact_Home__dll --target ssot__Individual__dlm 2>/dev/null
74
+ sf data360 dmo map-to-canonical -o <org> --dlo Contact_Home__dll --dmo ssot__Individual__dlm --dry-run 2>/dev/null
75
+ ```
76
+
77
+ ### 5. Run IR only after mappings are trustworthy
78
+ ```bash
79
+ sf data360 identity-resolution create -o <org> -f ir-ruleset.json 2>/dev/null
80
+ sf data360 identity-resolution run -o <org> --name Main 2>/dev/null
81
+ ```
82
+
83
+ ---
84
+
85
+ ## High-Signal Gotchas
86
+
87
+ - `dmo list` should usually use `--all`.
88
+ - Use `query describe` or `dmo get --json`; there is no `dmo describe` command.
89
+ - Mapping and related commands can be sensitive to API-version differences.
90
+ - Unified DMO names are ruleset-specific rather than generic.
91
+ - Data graph definitions are sensitive to field selection and relationship shape.
92
+ - If `dmo list` works but `identity-resolution list` is gated, treat that as a phase-specific gap rather than a full Data Cloud outage.
93
+
94
+ ---
95
+
96
+ ## Output Format
97
+
98
+ ```text
99
+ Harmonize task: <dmo / mapping / relationship / ir / data-graph>
100
+ Source/target: <dlo → dmo or ruleset/graph names>
101
+ Target org: <alias>
102
+ Artifacts: <json files / commands>
103
+ Verification: <passed / partial / blocked>
104
+ Next step: <segment / retrieve / follow-up>
105
+ ```
106
+
107
+ ---
108
+
109
+ ## References
110
+
111
+ - [README.md](README.md)
112
+ - [../orchestrating-datacloud/assets/definitions/dmo.template.json](../orchestrating-datacloud/assets/definitions/dmo.template.json)
113
+ - [../orchestrating-datacloud/assets/definitions/mapping.template.json](../orchestrating-datacloud/assets/definitions/mapping.template.json)
114
+ - [../orchestrating-datacloud/assets/definitions/relationship.template.json](../orchestrating-datacloud/assets/definitions/relationship.template.json)
115
+ - [../orchestrating-datacloud/assets/definitions/identity-resolution.template.json](../orchestrating-datacloud/assets/definitions/identity-resolution.template.json)
116
+ - [../orchestrating-datacloud/assets/definitions/data-graph.template.json](../orchestrating-datacloud/assets/definitions/data-graph.template.json)
117
+ - [../orchestrating-datacloud/references/feature-readiness.md](../orchestrating-datacloud/references/feature-readiness.md)
@@ -0,0 +1,14 @@
1
+ # Credits & Acknowledgments
2
+
3
+ This skill was created from practical Salesforce Industries CME EPC implementation patterns and DataPack examples in this repository.
4
+
5
+ ## Repository Example Sources
6
+
7
+ The example packs in this skill are curated, reusable sample payloads for documentation and template authoring.
8
+
9
+ - `assets/` (canonical EPC bundle template set)
10
+ - `assets/examples/samsung-galaxy-s22-bundle/` (bundle offer example)
11
+ - `assets/examples/business-internet-premium-fttc-simple-offer/` (simple offer example)
12
+ - `assets/examples/business-internet-pro-vpl-simple-offer/` (simple offer example)
13
+ - `assets/examples/static-ip-simple-offer/` (simple offer example)
14
+ - `examples/business-internet-plus-bundle/` (generated example with transcript)
@@ -0,0 +1,89 @@
1
+ # modeling-omnistudio-epc-catalog
2
+
3
+ Salesforce Industries CME EPC product-modeling skill for Product2-based catalog design. Build offer bundles, attributes, Product Child Items, and companion DataPack JSON artifacts with a 120-point quality rubric.
4
+
5
+ ## Features
6
+
7
+ - **Offer Bundle Modeling**: Create `Product2` offers with `SpecificationType=Offer` and `SpecificationSubType=Bundle`
8
+ - **Attribute Modeling**: Define attribute metadata, defaults, valid values, and assignment payloads
9
+ - **Bundle Composition**: Build root and child `%vlocity_namespace%__ProductChildItem__c` rows with quantity semantics
10
+ - **Companion DataPack Generation**: Produce pricing, orchestration, decomposition, override, and parent-key files
11
+ - **DataPack Integrity Controls**: Keep global keys, source keys, and lookup references consistent
12
+ - **120-Point Scoring**: Validate bundle quality across 6 EPC-focused categories
13
+
14
+ ## Quick Start
15
+
16
+ ### 1. Invoke the skill
17
+
18
+ ```
19
+ Skill: modeling-omnistudio-epc-catalog
20
+ Request: "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."
21
+ ```
22
+
23
+ ### 2. Typical operations
24
+
25
+ | Operation | Example Request |
26
+ |-----------|-----------------|
27
+ | Create bundle | "Create a Product2 offer bundle for Business Fiber Pro with 3 child products and full companion metadata." |
28
+ | Add attributes | "Add Contract Term and Download Speed attributes with defaults and valid values." |
29
+ | Build child items | "Create root and child ProductChildItem records with min/max/default quantity rules." |
30
+ | Generate companions | "Generate pricebook, price list, object field attribute, orchestration, decomposition, override, and parent key files." |
31
+ | Review and score | "Review this bundle DataPack and score it with the 120-point rubric." |
32
+
33
+ ## Companion Files for Full Bundle Payload
34
+
35
+ When generating a complete bundle, include:
36
+
37
+ - `*_DataPack.json`
38
+ - `*_AttributeAssignments.json`
39
+ - `*_ProductChildItems.json`
40
+ - `*_PricebookEntries.json`
41
+ - `*_PriceListEntries.json`
42
+ - `*_ObjectFieldAttributes.json`
43
+ - `*_OrchestrationScenarios.json`
44
+ - `*_DecompositionRelationships.json`
45
+ - `*_CompiledAttributeOverrides.json`
46
+ - `*_OverrideDefinitions.json`
47
+ - `*_ParentKeys.json`
48
+
49
+ ## Bundled Examples
50
+
51
+ - [assets/](assets/) - canonical EPC bundle template set for DataPack authoring
52
+ - [assets/examples/](assets/examples/) - additional bundle and simple-offer sample packs
53
+ - [examples/business-internet-plus-bundle/](examples/business-internet-plus-bundle/) - generated Business Internet Plus example with transcript
54
+
55
+ ## Scoring System (120 Points)
56
+
57
+ | Category | Points | Focus |
58
+ |----------|--------|-------|
59
+ | Catalog Identity and Naming | 20 | Product naming, ProductCode quality, stable key strategy |
60
+ | EPC Product Structure | 20 | Required Product2/EPC fields, lifecycle and activation coherence |
61
+ | Attribute Modeling | 25 | Category quality, valid values/defaults, required/display behavior |
62
+ | Offer Bundle Composition | 25 | Root PCI, child integrity, quantity semantics |
63
+ | DataPack Integrity | 15 | Namespace placeholder usage, lookup portability, key consistency |
64
+ | Documentation and Handoff | 15 | Intent clarity, risks, verification guidance |
65
+
66
+ **Thresholds**: `>=95` Deploy-ready | `70-94` Needs review | `<70` Block and fix
67
+
68
+ ## Cross-Skill Integration
69
+
70
+ | Related Skill | When to Use |
71
+ |---------------|-------------|
72
+ | analyzing-omnistudio-dependencies | Inventory namespace and dependencies before modeling |
73
+ | building-omnistudio-omniscript | Build guided selling UX on top of modeled catalog |
74
+ | building-omnistudio-integration-procedure | Orchestrate product and pricing interactions server-side |
75
+ | building-omnistudio-callable-apex | Implement callable Apex actions used by OmniStudio/IP flows over EPC selections |
76
+ | deploying-metadata | Validate and deploy generated metadata artifacts |
77
+
78
+ ## Documentation
79
+
80
+ - [SKILL.md](SKILL.md) - Full EPC workflow, guardrails, and scoring
81
+ - [references/epc-field-guide.md](references/epc-field-guide.md) - EPC field-level guidance
82
+ - [references/naming-conventions.md](references/naming-conventions.md) - Naming and keying conventions
83
+ - [../building-omnistudio-callable-apex/README.md](../building-omnistudio-callable-apex/README.md) - Companion callable Apex patterns
84
+
85
+ ## Requirements
86
+
87
+ - Salesforce Industries org with EPC enabled
88
+ - sf CLI v2 (for validation/deploy workflows)
89
+ - Compatible namespace model (`%vlocity_namespace%`, `vlocity_cmt`, or Core)