@salesforce/afv-skills 1.8.0 → 1.9.0

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,288 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+ # Change Data Capture (CDC) Guide
3
+
4
+ ## Overview
5
+
6
+ Change Data Capture publishes change events for Salesforce records, enabling near real-time data synchronization with external systems.
7
+
8
+ ## How CDC Works
9
+
10
+ ```
11
+ ┌─────────────────────────────────────────────────────────────────┐
12
+ │ CHANGE DATA CAPTURE FLOW │
13
+ ├─────────────────────────────────────────────────────────────────┤
14
+ │ │
15
+ │ 1. Record Created/Updated/Deleted in Salesforce │
16
+ │ ↓ │
17
+ │ 2. Salesforce generates Change Event │
18
+ │ ↓ │
19
+ │ 3. Event published to {{Object}}ChangeEvent channel │
20
+ │ ↓ │
21
+ │ 4. Apex Trigger or External Subscriber receives event │
22
+ │ ↓ │
23
+ │ 5. Process event (sync, audit, notify) │
24
+ │ │
25
+ └─────────────────────────────────────────────────────────────────┘
26
+ ```
27
+
28
+ ## CDC vs Platform Events
29
+
30
+ | Feature | CDC | Platform Events |
31
+ |---------|-----|-----------------|
32
+ | Trigger | Automatic on DML | Manual publish |
33
+ | Schema | Predefined (object fields) | Custom defined |
34
+ | Use Case | Data sync/replication | Custom messaging |
35
+ | Control | Limited | Full control |
36
+
37
+ ## Enabling CDC
38
+
39
+ ### Via Setup
40
+
41
+ 1. Go to **Setup → Integrations → Change Data Capture**
42
+ 2. Select objects to enable
43
+ 3. Save
44
+
45
+ ### Supported Objects
46
+
47
+ - Most Standard objects (Account, Contact, Opportunity, etc.)
48
+ - Custom objects
49
+ - Some system objects (User, Group, etc.)
50
+
51
+ ## Event Channel Names
52
+
53
+ | Object Type | Channel Name |
54
+ |-------------|--------------|
55
+ | Standard | `AccountChangeEvent`, `ContactChangeEvent` |
56
+ | Custom | `My_Object__ChangeEvent` (append ChangeEvent) |
57
+
58
+ ## Change Event Structure
59
+
60
+ ### ChangeEventHeader
61
+
62
+ ```apex
63
+ EventBus.ChangeEventHeader header = event.ChangeEventHeader;
64
+
65
+ // Available methods
66
+ header.getChangeType(); // CREATE, UPDATE, DELETE, UNDELETE
67
+ header.getChangedFields(); // List of changed field API names
68
+ header.getRecordIds(); // Affected record IDs
69
+ header.getEntityName(); // Object API name
70
+ header.getCommitNumber(); // Transaction sequence
71
+ header.getCommitTimestamp(); // When change occurred
72
+ header.getTransactionKey(); // Unique transaction ID
73
+ ```
74
+
75
+ ### Change Types
76
+
77
+ | Type | Description | Event Contains |
78
+ |------|-------------|----------------|
79
+ | CREATE | New record | All field values |
80
+ | UPDATE | Record modified | Changed field values only |
81
+ | DELETE | Record deleted | Record IDs only |
82
+ | UNDELETE | Restored from bin | All field values |
83
+ | GAP_* | Events missed | Affected record IDs |
84
+ | GAP_OVERFLOW | Too many changes | Entity name |
85
+
86
+ ### Field Values
87
+
88
+ - **Changed fields**: Contain new values
89
+ - **Unchanged fields**: Null
90
+ - Use `getChangedFields()` to know what changed
91
+
92
+ ## Subscribing to CDC
93
+
94
+ ### Apex Trigger
95
+
96
+ ```apex
97
+ trigger AccountCDC on AccountChangeEvent (after insert) {
98
+ for (AccountChangeEvent event : Trigger.new) {
99
+ EventBus.ChangeEventHeader header = event.ChangeEventHeader;
100
+
101
+ String changeType = header.getChangeType();
102
+ List<String> changedFields = header.getChangedFields();
103
+ List<String> recordIds = header.getRecordIds();
104
+
105
+ switch on changeType {
106
+ when 'CREATE' {
107
+ // Handle new records
108
+ }
109
+ when 'UPDATE' {
110
+ // Handle updates
111
+ }
112
+ when 'DELETE' {
113
+ // Handle deletions
114
+ }
115
+ }
116
+ }
117
+
118
+ // Set checkpoint
119
+ EventBus.TriggerContext.currentContext().setResumeCheckpoint(
120
+ Trigger.new[Trigger.new.size()-1].ReplayId
121
+ );
122
+ }
123
+ ```
124
+
125
+ ### External (CometD)
126
+
127
+ ```
128
+ Channel: /data/AccountChangeEvent
129
+ ```
130
+
131
+ ## Handling Specific Changes
132
+
133
+ ### Filter by Changed Fields
134
+
135
+ ```apex
136
+ // Only process if important fields changed
137
+ Set<String> importantFields = new Set<String>{'Status__c', 'Amount__c'};
138
+ List<String> changedFields = header.getChangedFields();
139
+
140
+ Boolean relevant = false;
141
+ for (String field : changedFields) {
142
+ if (importantFields.contains(field)) {
143
+ relevant = true;
144
+ break;
145
+ }
146
+ }
147
+
148
+ if (!relevant) return;
149
+ ```
150
+
151
+ ### Get New Values
152
+
153
+ ```apex
154
+ // Access field values from event (UPDATE: only changed fields have values)
155
+ if (changedFields.contains('Status__c')) {
156
+ String newStatus = event.Status__c;
157
+ // Process status change
158
+ }
159
+ ```
160
+
161
+ ## Gap Events
162
+
163
+ Gap events indicate missed events:
164
+
165
+ ### Types
166
+
167
+ | Event | Meaning | Action |
168
+ |-------|---------|--------|
169
+ | GAP_CREATE | Missed creates | Query and sync records |
170
+ | GAP_UPDATE | Missed updates | Query current state |
171
+ | GAP_DELETE | Missed deletes | Reconcile with source |
172
+ | GAP_UNDELETE | Missed restores | Query and sync |
173
+ | GAP_OVERFLOW | Too many changes | Full sync required |
174
+
175
+ ### Handling Gaps
176
+
177
+ ```apex
178
+ when 'GAP_CREATE', 'GAP_UPDATE', 'GAP_DELETE', 'GAP_UNDELETE' {
179
+ // Query current state and sync
180
+ List<Account> records = [
181
+ SELECT Id, Name, Status__c
182
+ FROM Account
183
+ WHERE Id IN :header.getRecordIds()
184
+ ];
185
+ syncToExternalSystem(records);
186
+ }
187
+ when 'GAP_OVERFLOW' {
188
+ // Trigger full sync batch job
189
+ Database.executeBatch(new FullSyncBatch());
190
+ }
191
+ ```
192
+
193
+ ## Replay and Durability
194
+
195
+ ### Retention
196
+
197
+ CDC events retained for **3 days** (72 hours).
198
+
199
+ ### Replay ID
200
+
201
+ Each event has unique ReplayId for tracking:
202
+
203
+ ```apex
204
+ String replayId = event.ReplayId;
205
+ ```
206
+
207
+ ### Resume Checkpoint
208
+
209
+ Critical for durability:
210
+
211
+ ```apex
212
+ // Always set checkpoint at end of trigger
213
+ EventBus.TriggerContext.currentContext().setResumeCheckpoint(lastReplayId);
214
+ ```
215
+
216
+ If trigger fails after checkpoint, processing resumes from that point.
217
+
218
+ ## External Sync Pattern
219
+
220
+ ```apex
221
+ public class AccountCDCHandler {
222
+
223
+ public static void syncToExternal(AccountChangeEvent event) {
224
+ EventBus.ChangeEventHeader header = event.ChangeEventHeader;
225
+
226
+ Map<String, Object> payload = new Map<String, Object>{
227
+ 'recordIds' => header.getRecordIds(),
228
+ 'operation' => header.getChangeType(),
229
+ 'timestamp' => header.getCommitTimestamp(),
230
+ 'changedFields' => header.getChangedFields()
231
+ };
232
+
233
+ // Add field values for CREATE/UPDATE
234
+ if (header.getChangeType() != 'DELETE') {
235
+ payload.put('name', event.Name);
236
+ payload.put('accountNumber', event.AccountNumber);
237
+ // Add relevant fields
238
+ }
239
+
240
+ // Queue async callout
241
+ System.enqueueJob(new ExternalSyncJob(payload));
242
+ }
243
+ }
244
+ ```
245
+
246
+ ## Best Practices
247
+
248
+ ### DO
249
+
250
+ 1. **Set resume checkpoint** in every trigger
251
+ 2. **Filter by relevant fields** to reduce noise
252
+ 3. **Handle all change types** including GAPs
253
+ 4. **Process idempotently** (events may replay)
254
+ 5. **Use async** for external callouts
255
+ 6. **Log changes** for debugging
256
+
257
+ ### DON'T
258
+
259
+ 1. **Don't throw exceptions** - catch and log
260
+ 2. **Don't ignore GAP events** - they indicate data loss
261
+ 3. **Don't assume single record** - batch DML creates multi-record events
262
+ 4. **Don't block on external calls** - use Queueable
263
+
264
+ ## Monitoring
265
+
266
+ ### Event Delivery
267
+
268
+ Check for failures in:
269
+ - Setup → Platform Events → Monitor
270
+ - Debug logs for triggers
271
+
272
+ ### Common Issues
273
+
274
+ | Issue | Cause | Solution |
275
+ |-------|-------|----------|
276
+ | Missing events | No CDC enabled | Enable in Setup |
277
+ | Duplicate processing | No idempotency | Check transactionKey |
278
+ | GAP events | Processing too slow | Optimize trigger, scale out |
279
+ | Timeout | Heavy processing | Move to async |
280
+
281
+ ## Limits
282
+
283
+ | Limit | Value |
284
+ |-------|-------|
285
+ | Objects per org | 100 |
286
+ | Events per 15 minutes | Varies by edition |
287
+ | Event retention | 3 days (72 hours) |
288
+ | Replay window | 3 days |
@@ -0,0 +1,94 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+
3
+ # CLI Commands & Helper Scripts
4
+
5
+ ## Named Credentials
6
+
7
+ ```bash
8
+ # List Named Credentials
9
+ sf org list metadata --metadata-type NamedCredential --target-org {{alias}}
10
+
11
+ # Deploy Named Credential
12
+ sf project deploy start --metadata NamedCredential:{{Name}} --target-org {{alias}}
13
+
14
+ # Retrieve Named Credential
15
+ sf project retrieve start --metadata NamedCredential:{{Name}} --target-org {{alias}}
16
+ ```
17
+
18
+ ## External Services
19
+
20
+ ```bash
21
+ # List External Service Registrations
22
+ sf org list metadata --metadata-type ExternalServiceRegistration --target-org {{alias}}
23
+
24
+ # Deploy External Service
25
+ sf project deploy start --metadata ExternalServiceRegistration:{{Name}} --target-org {{alias}}
26
+ ```
27
+
28
+ ## Platform Events
29
+
30
+ ```bash
31
+ # List Platform Events
32
+ sf org list metadata --metadata-type CustomObject --target-org {{alias}} | grep "__e"
33
+
34
+ # Deploy Platform Event
35
+ sf project deploy start --metadata CustomObject:{{EventName}}__e --target-org {{alias}}
36
+ ```
37
+
38
+ ## API Requests (Beta)
39
+
40
+ ```bash
41
+ # REST API request
42
+ sf api request rest /services/data/v66.0/sobjects/Account/describe --target-org {{alias}}
43
+
44
+ # REST with POST body
45
+ sf api request rest /services/data/v66.0/sobjects/Account --method POST \
46
+ --body '{"Name":"Test Account"}' --target-org {{alias}}
47
+
48
+ # GraphQL query
49
+ sf api request graphql --body '{"query":"{ uiapi { query { Account { edges { node { Name { value } } } } } } }"}' --target-org {{alias}}
50
+ ```
51
+
52
+ > **[Beta]** These commands simplify API exploration. For production, use Named Credentials and Apex callouts.
53
+
54
+ ---
55
+
56
+ ## Helper Scripts
57
+
58
+ building-sf-integrations includes automation scripts to configure credentials without manual UI steps.
59
+
60
+ ### Available Scripts
61
+
62
+ | Script | Purpose | Usage |
63
+ |--------|---------|-------|
64
+ | `configure-named-credential.sh` | Set API keys via ConnectApi (Enhanced NC) | `./scripts/configure-named-credential.sh <org-alias>` |
65
+ | `set-api-credential.sh` | Store keys in Custom Settings (legacy) | `./scripts/set-api-credential.sh <name> - <org-alias>` |
66
+
67
+ ### Auto-Run Behavior
68
+
69
+ | File Pattern | Suggested Action |
70
+ |--------------|------------------|
71
+ | `*.namedCredential-meta.xml` | Run `configure-named-credential.sh` |
72
+ | `*.externalCredential-meta.xml` | Run `configure-named-credential.sh` |
73
+ | `*.cspTrustedSite-meta.xml` | Deploy endpoint security |
74
+
75
+ ### Example Workflow
76
+
77
+ ```bash
78
+ # 1. Deploy metadata first
79
+ sf project deploy start --metadata ExternalCredential:WeatherAPI \
80
+ --metadata NamedCredential:WeatherAPI \
81
+ --target-org MyOrg
82
+
83
+ # 2. Run automation script
84
+ ./scripts/configure-named-credential.sh MyOrg
85
+ # Enter API key when prompted (secure, hidden input)
86
+ ```
87
+
88
+ ### Prerequisites
89
+
90
+ - **Salesforce CLI v2+**: `sf` command available
91
+ - **Authenticated org**: `sf org login web -a <alias>`
92
+ - **Deployed metadata**: External Credential and Named Credential deployed
93
+
94
+ See [references/named-credentials-automation.md](../references/named-credentials-automation.md) for complete guide.
@@ -0,0 +1,266 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+ # Event-Driven Architecture Guide
3
+
4
+ > **Source**: Salesforce Architect Decision Guides — Event-Driven Architecture, Async Processing
5
+ > **Related**: [event-patterns.md](./event-patterns.md) | [callout-patterns.md](./callout-patterns.md)
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ Event-Driven Architecture (EDA) decouples producers from consumers, enabling scalable, resilient integrations. Salesforce supports multiple event mechanisms — choosing the right one depends on volume, latency, and consumer location.
12
+
13
+ ---
14
+
15
+ ## 5 Core EDA Patterns
16
+
17
+ ### Pattern Comparison Matrix
18
+
19
+ | Pattern | Description | Salesforce Implementation | Best For |
20
+ |---------|-------------|--------------------------|----------|
21
+ | **Pub/Sub** | Publisher emits, multiple subscribers consume | Platform Events + Pub/Sub API | Multi-consumer notifications, cross-system sync |
22
+ | **Fanout** | One event → multiple independent consumers | Platform Events + multiple subscribers | Parallel processing, diverse downstream systems |
23
+ | **Passed Messages** | Event carries data payload for consumer processing | Platform Events with rich fields | External systems needing full context in message |
24
+ | **Streaming** | Continuous data feed for real-time consumers | CDC + Pub/Sub API | Data replication, real-time dashboards |
25
+ | **Queueing** | Ordered, guaranteed-delivery message processing | Platform Events (High-Volume) with checkpoints | Sequential processing, backpressure handling |
26
+
27
+ ### When to Use Each
28
+
29
+ **Pub/Sub**: Default choice for most event-driven integrations. Works for both internal (Apex triggers) and external (Pub/Sub API) consumers.
30
+
31
+ **Fanout**: When a single business event (e.g., "Order Placed") needs to notify billing, shipping, analytics, and notifications simultaneously.
32
+
33
+ **Passed Messages**: When the consumer needs all context in the event itself (no callback to Salesforce). Keep payloads lean — 1 MB limit.
34
+
35
+ **Streaming**: For data replication to warehouses or lakes. CDC + Pub/Sub API replaces legacy Streaming API.
36
+
37
+ **Queueing**: When processing order matters and you need backpressure handling. Use High-Volume Platform Events with resume checkpoints.
38
+
39
+ ---
40
+
41
+ ## Pub/Sub API (Recommended External Subscription)
42
+
43
+ The Pub/Sub API is the **recommended mechanism for external consumers** subscribing to Platform Events and CDC events. It replaces the legacy Streaming API (CometD).
44
+
45
+ ### Key Characteristics
46
+
47
+ | Feature | Pub/Sub API | Legacy Streaming API (Deprecated) |
48
+ |---------|-------------|----------------------------------|
49
+ | **Protocol** | gRPC | CometD (long-polling) |
50
+ | **Authentication** | OAuth 2.0 | Session-based |
51
+ | **Event Types** | Platform Events, CDC, Custom Channels | PushTopic, Generic Events, Platform Events |
52
+ | **Performance** | High throughput, binary protocol | Limited by long-polling overhead |
53
+ | **Status** | **Current — use for all new development** | Deprecated — no new investments |
54
+
55
+ ### Subscription Modes
56
+
57
+ - **Subscribe**: Stream events from a given replay ID forward
58
+ - **PublishStream**: Bi-directional — publish events via gRPC (no Apex needed)
59
+ - **ManagedSubscribe**: Salesforce manages replay state (simplest for external consumers)
60
+
61
+ ### External Consumer Architecture
62
+
63
+ ```
64
+ Salesforce Org
65
+ └── Platform Event / CDC Event
66
+ └── Pub/Sub API (gRPC endpoint)
67
+ └── External Consumer (Java, Python, Node.js, Go)
68
+ ├── Process event
69
+ ├── Commit replay ID
70
+ └── Handle failures with retry
71
+ ```
72
+
73
+ ### LWC Subscription (Internal)
74
+
75
+ For Lightning Web Components subscribing to Platform Events, use **empApi**:
76
+
77
+ ```javascript
78
+ import { subscribe, unsubscribe, onError } from 'lightning/empApi';
79
+
80
+ const channelName = '/event/Order_Status__e';
81
+ let subscription = {};
82
+
83
+ connectedCallback() {
84
+ subscribe(channelName, -1, (response) => {
85
+ console.log('Event received:', JSON.stringify(response));
86
+ this.handleEvent(response.data.payload);
87
+ }).then((sub) => {
88
+ subscription = sub;
89
+ });
90
+
91
+ onError((error) => {
92
+ console.error('empApi error:', JSON.stringify(error));
93
+ });
94
+ }
95
+
96
+ disconnectedCallback() {
97
+ unsubscribe(subscription);
98
+ }
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Event Relays to AWS EventBridge
104
+
105
+ Salesforce Event Relays forward Platform Events to AWS EventBridge, enabling cloud-native event processing.
106
+
107
+ ### Architecture
108
+
109
+ ```
110
+ Salesforce Platform Event
111
+ └── Event Relay Definition (Metadata)
112
+ └── AWS EventBridge Partner Event Source
113
+ ├── AWS Lambda
114
+ ├── AWS SQS
115
+ ├── AWS Step Functions
116
+ └── Any EventBridge target
117
+ ```
118
+
119
+ ### When to Use
120
+
121
+ - AWS-native architecture needing Salesforce events
122
+ - Complex event processing requiring AWS services (Step Functions, SQS, SNS)
123
+ - Fan-out to multiple AWS consumers from a single Salesforce event
124
+ - Event archival in AWS S3 or data lakes
125
+
126
+ ### Limitations
127
+
128
+ - One-way only (Salesforce → AWS)
129
+ - Adds latency (~seconds) compared to direct Pub/Sub API
130
+ - Requires AWS account configuration and IAM setup
131
+ - Platform Event limits still apply on the Salesforce side
132
+
133
+ ---
134
+
135
+ ## Apache Kafka on Heroku
136
+
137
+ For organizations needing long-retention, high-throughput event streaming beyond Platform Event limits.
138
+
139
+ ### Comparison with Platform Events
140
+
141
+ | Feature | Platform Events | Kafka on Heroku |
142
+ |---------|----------------|-----------------|
143
+ | **Retention** | 24h (HV) / 72h (SV) | 1-6 weeks (configurable) |
144
+ | **Throughput** | Millions/day (HV) | Millions/second |
145
+ | **Consumer groups** | Limited | Unlimited |
146
+ | **Replay** | ReplayId-based | Offset-based, topic-level |
147
+ | **Cost** | Included / Platform Event add-on | Heroku Kafka add-on |
148
+
149
+ ### When to Choose Kafka
150
+
151
+ - Retention > 72 hours required
152
+ - Need multiple independent consumer groups
153
+ - Event throughput exceeds Platform Event limits
154
+ - Existing Kafka ecosystem in organization
155
+ - Need topic partitioning for ordered processing
156
+
157
+ ### Integration Pattern
158
+
159
+ ```
160
+ Salesforce → Platform Event → Apex/Flow subscriber → Heroku Kafka producer
161
+ └── Consumer Group A (analytics)
162
+ └── Consumer Group B (data lake)
163
+ └── Consumer Group C (external CRM)
164
+ ```
165
+
166
+ ---
167
+
168
+ ## When NOT to Use Events
169
+
170
+ Events are not always the right choice. Prefer synchronous patterns when:
171
+
172
+ | Scenario | Why Not Events | Better Alternative |
173
+ |----------|---------------|-------------------|
174
+ | **Need synchronous response** | Events are async — no return value | REST callout with Named Credential |
175
+ | **Infrequent data changes** | Event infrastructure overhead not justified | Scheduled batch sync |
176
+ | **Target system lacks event support** | Consumer can't subscribe to events | Outbound Messages or REST callout |
177
+ | **Simple record sync** | Over-engineering for basic needs | Salesforce Connect / External Objects |
178
+ | **Data volume < 100 records/day** | Platform Event overhead unnecessary | Scheduled Flow with REST callout |
179
+
180
+ ---
181
+
182
+ ## High-Volume Outbound Pattern
183
+
184
+ For scenarios requiring high-volume data push to external systems:
185
+
186
+ > **Do NOT use async Apex directly for high-volume outbound.** Apex async limits (250K daily Queueable, 250K daily @future) are shared across all org operations. Consuming them for outbound sync starves other automation.
187
+
188
+ ### Recommended Pattern: Middleware + Platform Events
189
+
190
+ ```
191
+ Salesforce Record Change
192
+ └── After-Save Flow / Trigger
193
+ └── Publish Platform Event (lightweight payload)
194
+ └── External Middleware (MuleSoft, Pub/Sub API consumer)
195
+ ├── Enrich data (callback to Salesforce REST API if needed)
196
+ ├── Transform to target format
197
+ ├── Deliver to target system with retry logic
198
+ └── Report status back via Platform Event or REST callback
199
+ ```
200
+
201
+ ### Benefits
202
+
203
+ - **No Apex async limit consumption** — events don't count against daily limits
204
+ - **Middleware handles retries** — exponential backoff, dead letter queues
205
+ - **Scalable** — middleware scales independently of Salesforce
206
+ - **Observable** — middleware provides logging, monitoring, alerting
207
+
208
+ ---
209
+
210
+ ## Monitoring Event-Driven Systems
211
+
212
+ ### AsyncApexJob Monitoring
213
+
214
+ Query job status for async Apex that processes events:
215
+
216
+ ```apex
217
+ List<AsyncApexJob> jobs = [
218
+ SELECT Id, JobType, Status, NumberOfErrors, MethodName, CreatedDate
219
+ FROM AsyncApexJob
220
+ WHERE CreatedDate = TODAY
221
+ AND Status IN ('Failed', 'Aborted')
222
+ ORDER BY CreatedDate DESC
223
+ LIMIT 50
224
+ ];
225
+ ```
226
+
227
+ > **Polling limit**: AsyncApexJob queries are subject to SOQL limits. Max polling frequency: every 5 minutes.
228
+
229
+ ### Platform Event Metrics
230
+
231
+ - **Setup → Platform Events → Usage**: View publish/subscribe counts
232
+ - **EventBusSubscriber**: Query for subscriber status and position
233
+ - **Proactive Monitoring**: Set up Flow or Apex to alert on failed event processing
234
+
235
+ ```apex
236
+ // Check subscriber lag
237
+ List<EventBusSubscriber> subs = [
238
+ SELECT Name, Position, Retries, LastError, Status
239
+ FROM EventBusSubscriber
240
+ WHERE Topic = 'Order_Status__e'
241
+ ];
242
+ ```
243
+
244
+ ### Key Metrics to Monitor
245
+
246
+ | Metric | Source | Alert Threshold |
247
+ |--------|--------|-----------------|
248
+ | Failed events | `EventBusSubscriber.Retries` | > 3 consecutive retries |
249
+ | Subscriber lag | `EventBusSubscriber.Position` vs latest ReplayId | Lag > 1000 events |
250
+ | Async job failures | `AsyncApexJob.NumberOfErrors` | Any failure |
251
+ | Event publish errors | `Database.SaveResult` in publisher | Any failure |
252
+ | Daily event usage | Setup → Company Information → Platform Event Usage | > 80% of allocation |
253
+
254
+ ---
255
+
256
+ ## Summary: EDA Decision Tree
257
+
258
+ ```
259
+ Need real-time data sync?
260
+ ├── YES → Is consumer external?
261
+ │ ├── YES → Pub/Sub API + Platform Events (or CDC for record changes)
262
+ │ └── NO → Platform Event trigger subscriber (or empApi for LWC)
263
+ └── NO → Is volume high (>10K records/day)?
264
+ ├── YES → Middleware + Platform Events (high-volume outbound pattern)
265
+ └── NO → Scheduled batch sync (simplest, most maintainable)
266
+ ```