@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,201 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+ # Named Credentials Automation Guide
3
+
4
+ This guide explains how to automate Named Credential configuration using the building-sf-integrations helper scripts.
5
+
6
+ > **Key Insight:** Enhanced Named Credentials (API 60+) can be configured programmatically using `ConnectApi.NamedCredentials` - no UI required!
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ Enhanced Named Credentials = **External Credential** + **Named Credential** + **Endpoint Security**
13
+
14
+ ```
15
+ External Credential (stores the API key securely)
16
+
17
+ Named Credential (references the External Credential)
18
+
19
+ Your HTTP Callout (uses callout:NamedCredentialName)
20
+ ```
21
+
22
+ ### Why Enhanced Named Credentials?
23
+
24
+ | Benefit | Description |
25
+ |---------|-------------|
26
+ | **Security** | AES-256 encryption by Salesforce platform |
27
+ | **Flexibility** | Supports Custom, Basic, OAuth, JWT protocols |
28
+ | **Portability** | Easier to manage across multiple orgs |
29
+ | **Automation** | Configurable via ConnectApi (no UI required) |
30
+ | **Compliance** | Passes PCI-DSS, SOC 2 audits |
31
+
32
+ ---
33
+
34
+ ## Deployment Order
35
+
36
+ **CRITICAL:** Deploy components in this exact order:
37
+
38
+ ```bash
39
+ # 1. Deploy External Credential (defines the credential structure)
40
+ sf project deploy start \
41
+ --source-dir force-app/main/default/externalCredentials/YourAPI.externalCredential-meta.xml \
42
+ --target-org YourOrg
43
+
44
+ # 2. Deploy Named Credential (references the External Credential)
45
+ sf project deploy start \
46
+ --source-dir force-app/main/default/namedCredentials/YourAPI.namedCredential-meta.xml \
47
+ --target-org YourOrg
48
+
49
+ # 3. Deploy endpoint security (allows outbound HTTP calls)
50
+ sf project deploy start \
51
+ --source-dir force-app/main/default/cspTrustedSites/YourAPI.cspTrustedSite-meta.xml \
52
+ --target-org YourOrg
53
+
54
+ # 4. Set the API key using our automation script
55
+ ./scripts/configure-named-credential.sh YourOrg
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Automation Scripts
61
+
62
+ ### `configure-named-credential.sh`
63
+
64
+ **Purpose:** Sets API keys for Enhanced Named Credentials using ConnectApi
65
+
66
+ **Usage:**
67
+ ```bash
68
+ ./scripts/configure-named-credential.sh <org-alias>
69
+ ```
70
+
71
+ **What it does:**
72
+ 1. Validates org connection via `sf org display`
73
+ 2. Checks External Credential exists via SOQL
74
+ 3. Prompts for API key securely (input hidden)
75
+ 4. Generates Apex using `ConnectApi.NamedCredentials.createCredential()`
76
+ 5. Handles create vs. patch automatically
77
+
78
+ **Under the hood:**
79
+ ```apex
80
+ ConnectApi.CredentialInput creds = new ConnectApi.CredentialInput();
81
+ creds.externalCredential = 'YourExternalCredential';
82
+ creds.principalName = 'yourPrincipalName';
83
+ creds.authenticationProtocol = ConnectApi.CredentialAuthenticationProtocol.Custom;
84
+
85
+ Map<String, ConnectApi.CredentialValueInput> params = new Map<String, ConnectApi.CredentialValueInput>();
86
+ ConnectApi.CredentialValueInput apiKey = new ConnectApi.CredentialValueInput();
87
+ apiKey.encrypted = true;
88
+ apiKey.value = 'YOUR_API_KEY';
89
+ params.put('apiKey', apiKey);
90
+
91
+ creds.credentials = params;
92
+ ConnectApi.NamedCredentials.createCredential(creds);
93
+ ```
94
+
95
+ ### `set-api-credential.sh`
96
+
97
+ **Purpose:** Stores API keys in Custom Settings (legacy/dev approach)
98
+
99
+ **Usage:**
100
+ ```bash
101
+ # Secure input (recommended)
102
+ ./scripts/set-api-credential.sh <setting-name> - <org-alias>
103
+
104
+ # Direct input
105
+ ./scripts/set-api-credential.sh <setting-name> <api-key> <org-alias>
106
+ ```
107
+
108
+ **When to use:**
109
+ - Dev/test environments
110
+ - CI/CD pipelines (no Apex execution)
111
+ - Simple API key auth via query parameters
112
+
113
+ **Not recommended for production** - use Enhanced Named Credentials instead.
114
+
115
+ ---
116
+
117
+ ## Complete Example: Weather API
118
+
119
+ ### Step 1: Create Metadata
120
+
121
+ **External Credential:**
122
+ ```xml
123
+ <?xml version="1.0" encoding="UTF-8"?>
124
+ <ExternalCredential xmlns="http://soap.sforce.com/2006/04/metadata">
125
+ <authenticationProtocol>Custom</authenticationProtocol>
126
+ <externalCredentialParameters>
127
+ <parameterGroup>weatherAPIKey</parameterGroup>
128
+ <parameterName>weatherAPIKey</parameterName>
129
+ <parameterType>NamedPrincipal</parameterType>
130
+ <sequenceNumber>1</sequenceNumber>
131
+ </externalCredentialParameters>
132
+ <label>Weather API</label>
133
+ </ExternalCredential>
134
+ ```
135
+
136
+ **Named Credential:**
137
+ ```xml
138
+ <?xml version="1.0" encoding="UTF-8"?>
139
+ <NamedCredential xmlns="http://soap.sforce.com/2006/04/metadata">
140
+ <allowMergeFieldsInBody>false</allowMergeFieldsInBody>
141
+ <allowMergeFieldsInHeader>true</allowMergeFieldsInHeader>
142
+ <calloutStatus>Enabled</calloutStatus>
143
+ <label>Weather API</label>
144
+ <namedCredentialParameters>
145
+ <parameterName>Url</parameterName>
146
+ <parameterType>Url</parameterType>
147
+ <parameterValue>https://api.weather.com</parameterValue>
148
+ </namedCredentialParameters>
149
+ <namedCredentialParameters>
150
+ <externalCredential>WeatherAPI</externalCredential>
151
+ <parameterName>ExternalCredential</parameterName>
152
+ <parameterType>Authentication</parameterType>
153
+ </namedCredentialParameters>
154
+ <namedCredentialType>SecuredEndpoint</namedCredentialType>
155
+ </NamedCredential>
156
+ ```
157
+
158
+ ### Step 2: Deploy and Configure
159
+
160
+ ```bash
161
+ # Deploy all metadata
162
+ sf project deploy start --metadata ExternalCredential:WeatherAPI \
163
+ --metadata NamedCredential:WeatherAPI \
164
+ --metadata CspTrustedSite:WeatherAPI \
165
+ --target-org MyOrg
166
+
167
+ # Configure API key
168
+ ./scripts/configure-named-credential.sh MyOrg
169
+ ```
170
+
171
+ ### Step 3: Use in Apex
172
+
173
+ ```apex
174
+ HttpRequest req = new HttpRequest();
175
+ req.setEndpoint('callout:WeatherAPI/forecast?city=London');
176
+ req.setMethod('GET');
177
+
178
+ HttpResponse res = new Http().send(req);
179
+ System.debug(res.getBody());
180
+ ```
181
+
182
+ The API key is automatically included - no manual credential handling!
183
+
184
+ ---
185
+
186
+ ## Troubleshooting
187
+
188
+ | Error | Cause | Fix |
189
+ |-------|-------|-----|
190
+ | "External Credential not found" | Not deployed or wrong name | Deploy first, check spelling |
191
+ | "Named Credential not found" | Not deployed | Deploy after External Credential |
192
+ | "No existing credentials to update" | Using patch instead of create | Script handles automatically |
193
+ | "Unable to connect" | Missing endpoint security | Deploy CSP Trusted Site |
194
+
195
+ ---
196
+
197
+ ## Related Documentation
198
+
199
+ - [named-credentials-guide.md](./named-credentials-guide.md) - Template reference
200
+ - [external-services-guide.md](./external-services-guide.md) - OpenAPI integration
201
+ - [security-best-practices.md](./security-best-practices.md) - Security patterns
@@ -0,0 +1,173 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+ # Named Credentials Guide
3
+
4
+ ## Overview
5
+
6
+ Named Credentials provide secure storage of authentication credentials and endpoint URLs for external system integrations. They eliminate the need to hardcode credentials in Apex code.
7
+
8
+ ## Architecture Evolution
9
+
10
+ ### Legacy Named Credentials (Pre-API 61)
11
+
12
+ - Single principal per credential
13
+ - Authentication configured directly on Named Credential
14
+ - Simpler setup but less flexible
15
+
16
+ ### External Credentials (API 61+)
17
+
18
+ - Separate External Credential and Named Credential
19
+ - Named Principal and Per-User Principal support
20
+ - Permission Set-based access control
21
+ - More secure and flexible
22
+
23
+ ```
24
+ ┌─────────────────────────────────────────────────────────────────┐
25
+ │ CREDENTIAL ARCHITECTURE (API 61+) │
26
+ ├─────────────────────────────────────────────────────────────────┤
27
+ │ │
28
+ │ External Credential │
29
+ │ ├── Authentication Protocol (OAuth, JWT, Custom) │
30
+ │ ├── OAuth/JWT Parameters │
31
+ │ └── Principals │
32
+ │ ├── Named Principal (shared service account) │
33
+ │ └── Per-User Principal (individual auth) │
34
+ │ │
35
+ │ Named Credential │
36
+ │ ├── Endpoint URL │
37
+ │ └── References External Credential │
38
+ │ │
39
+ │ Permission Set │
40
+ │ └── External Credential Principal Access │
41
+ │ │
42
+ └─────────────────────────────────────────────────────────────────┘
43
+ ```
44
+
45
+ ## Authentication Types
46
+
47
+ ### 1. OAuth 2.0 Client Credentials
48
+
49
+ **Use Case**: Server-to-server integration without user context
50
+
51
+ ```apex
52
+ // Apex usage - Named Credential handles auth automatically
53
+ HttpRequest req = new HttpRequest();
54
+ req.setEndpoint('callout:MyOAuthCredential/api/resource');
55
+ req.setMethod('GET');
56
+ // Authorization header added automatically
57
+ ```
58
+
59
+ **Setup**:
60
+ 1. Create Auth Provider (optional, for complex OAuth)
61
+ 2. Create Named Credential with OAuth protocol
62
+ 3. Enter Client ID and Client Secret via UI
63
+
64
+ ### 2. OAuth 2.0 JWT Bearer
65
+
66
+ **Use Case**: Certificate-based server-to-server auth
67
+
68
+ **Prerequisites**:
69
+ - Certificate in Setup → Certificate and Key Management
70
+ - Connected App configured for JWT Bearer
71
+ - External system configured to trust certificate
72
+
73
+ **Flow**:
74
+ 1. Salesforce creates JWT with claims (iss, sub, aud, exp)
75
+ 2. JWT signed with certificate private key
76
+ 3. JWT exchanged for access token
77
+ 4. Access token used for API calls
78
+
79
+ ### 3. Certificate-Based (Mutual TLS)
80
+
81
+ **Use Case**: High-security integrations requiring client certificate
82
+
83
+ **Setup**:
84
+ 1. Obtain client certificate from CA or external system
85
+ 2. Import to Setup → Certificate and Key Management
86
+ 3. Configure Named Credential with certificate
87
+ 4. External system must trust Salesforce's certificate
88
+
89
+ ### 4. Basic Auth / API Key
90
+
91
+ **Use Case**: Simple APIs, internal systems
92
+
93
+ **Pattern for API Key**:
94
+ ```apex
95
+ HttpRequest req = new HttpRequest();
96
+ req.setEndpoint('callout:MyCredential/api/resource');
97
+ req.setHeader('X-API-Key', '{!$Credential.Password}');
98
+ ```
99
+
100
+ ## Best Practices
101
+
102
+ ### DO
103
+
104
+ - **Use Named Credentials** for ALL external callouts
105
+ - **Rotate credentials** regularly using Named Credential update
106
+ - **Use External Credentials** (API 61+) for new development
107
+ - **Limit OAuth scopes** to minimum required
108
+ - **Use Per-User Principal** when user context matters
109
+ - **Test credentials** before deployment
110
+
111
+ ### DON'T
112
+
113
+ - **Never hardcode** credentials in Apex
114
+ - **Never commit** credentials to source control
115
+ - **Don't share** service account credentials across environments
116
+ - **Don't use** overly broad OAuth scopes
117
+
118
+ ## Common Patterns
119
+
120
+ ### Pattern 1: Service Integration
121
+
122
+ ```apex
123
+ public class ExternalServiceCallout {
124
+ public static HttpResponse callService(String endpoint, String body) {
125
+ HttpRequest req = new HttpRequest();
126
+ req.setEndpoint('callout:ServiceCredential' + endpoint);
127
+ req.setMethod('POST');
128
+ req.setHeader('Content-Type', 'application/json');
129
+ req.setBody(body);
130
+ return new Http().send(req);
131
+ }
132
+ }
133
+ ```
134
+
135
+ ### Pattern 2: Multiple Environments
136
+
137
+ ```
138
+ Named Credentials:
139
+ ├── MyAPI_Dev → https://api-dev.example.com
140
+ ├── MyAPI_UAT → https://api-uat.example.com
141
+ └── MyAPI_Prod → https://api.example.com
142
+ ```
143
+
144
+ Use Custom Metadata or Custom Settings to select credential by environment.
145
+
146
+ ### Pattern 3: Per-User OAuth (API 61+)
147
+
148
+ For APIs requiring user-specific authentication:
149
+
150
+ 1. Create External Credential with Per-User Principal
151
+ 2. Create Named Credential referencing External Credential
152
+ 3. Users authenticate individually via OAuth flow
153
+ 4. Each user's callouts use their own token
154
+
155
+ ## Troubleshooting
156
+
157
+ | Error | Cause | Solution |
158
+ |-------|-------|----------|
159
+ | `Named credential not found` | Credential doesn't exist or wrong name | Verify credential name in Setup |
160
+ | `Authentication failed` | Invalid credentials | Update credentials via Setup UI |
161
+ | `Insufficient privileges` | User lacks permission | Assign Permission Set with External Credential Principal Access |
162
+ | `Connection refused` | Network/firewall issue | Check Remote Site Settings, firewall rules |
163
+ | `Certificate error` | SSL/TLS issue | Verify certificate chain, expiration |
164
+
165
+ ## Migration: Legacy to External Credentials
166
+
167
+ 1. **Create External Credential** with same auth parameters
168
+ 2. **Create new Named Credential** referencing External Credential
169
+ 3. **Create Permission Set** with External Credential Principal Access
170
+ 4. **Assign Permission Set** to integration users
171
+ 5. **Update Apex code** to use new Named Credential
172
+ 6. **Test thoroughly** before decommissioning legacy credential
173
+ 7. **Delete legacy** Named Credential after validation
@@ -0,0 +1,288 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+ # Platform Events Guide
3
+
4
+ ## Overview
5
+
6
+ Platform Events enable event-driven architecture in Salesforce. They provide a scalable, asynchronous messaging system for real-time integrations.
7
+
8
+ ## Event Types
9
+
10
+ ### Standard Volume
11
+
12
+ - Up to ~2,000 events per hour
13
+ - Included in all Salesforce editions
14
+ - Standard delivery guarantees
15
+
16
+ ### High Volume
17
+
18
+ - Millions of events per day
19
+ - At-least-once delivery
20
+ - 24-hour retention for replay
21
+ - May require additional entitlement
22
+
23
+ ## When to Use Platform Events
24
+
25
+ | Scenario | Platform Events | Other Options |
26
+ |----------|-----------------|---------------|
27
+ | Real-time notifications | ✅ Best choice | - |
28
+ | Decoupled integrations | ✅ Best choice | - |
29
+ | High-volume streaming | ✅ High Volume | Change Data Capture |
30
+ | Simple record sync | Consider | Change Data Capture |
31
+ | External system notifications | ✅ Best choice | - |
32
+ | Internal process triggers | ✅ Good choice | Process Builder, Flow |
33
+
34
+ ## Creating Platform Events
35
+
36
+ ### Via Metadata (Recommended)
37
+
38
+ ```xml
39
+ <?xml version="1.0" encoding="UTF-8"?>
40
+ <CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
41
+ <deploymentStatus>Deployed</deploymentStatus>
42
+ <eventType>HighVolume</eventType>
43
+ <label>Order Update Event</label>
44
+ <pluralLabel>Order Update Events</pluralLabel>
45
+ <publishBehavior>PublishAfterCommit</publishBehavior>
46
+ <fields>
47
+ <fullName>Order_Id__c</fullName>
48
+ <label>Order ID</label>
49
+ <type>Text</type>
50
+ <length>18</length>
51
+ </fields>
52
+ <fields>
53
+ <fullName>Status__c</fullName>
54
+ <label>Status</label>
55
+ <type>Text</type>
56
+ <length>50</length>
57
+ </fields>
58
+ </CustomObject>
59
+ ```
60
+
61
+ ### File Location
62
+
63
+ ```
64
+ force-app/main/default/objects/Order_Update_Event__e/Order_Update_Event__e.object-meta.xml
65
+ ```
66
+
67
+ ## Publishing Events
68
+
69
+ ### From Apex
70
+
71
+ ```apex
72
+ // Single event
73
+ Order_Update_Event__e event = new Order_Update_Event__e();
74
+ event.Order_Id__c = orderId;
75
+ event.Status__c = 'Shipped';
76
+
77
+ Database.SaveResult result = EventBus.publish(event);
78
+ if (result.isSuccess()) {
79
+ System.debug('Event published: ' + result.getId());
80
+ }
81
+
82
+ // Multiple events
83
+ List<Order_Update_Event__e> events = new List<Order_Update_Event__e>();
84
+ // ... populate events
85
+ List<Database.SaveResult> results = EventBus.publish(events);
86
+ ```
87
+
88
+ ### From Flow
89
+
90
+ 1. Create Record element
91
+ 2. Select Platform Event object
92
+ 3. Map field values
93
+
94
+ ### From Process Builder
95
+
96
+ 1. Add Immediate Action
97
+ 2. Select "Create a Record"
98
+ 3. Choose Platform Event
99
+
100
+ ## Subscribing to Events
101
+
102
+ ### Apex Trigger
103
+
104
+ ```apex
105
+ trigger OrderUpdateSubscriber on Order_Update_Event__e (after insert) {
106
+ for (Order_Update_Event__e event : Trigger.new) {
107
+ System.debug('Order ' + event.Order_Id__c + ' is now ' + event.Status__c);
108
+ // Process event
109
+ }
110
+
111
+ // Set checkpoint for durability
112
+ EventBus.TriggerContext.currentContext().setResumeCheckpoint(
113
+ Trigger.new[Trigger.new.size() - 1].ReplayId
114
+ );
115
+ }
116
+ ```
117
+
118
+ ### Flow (Record-Triggered)
119
+
120
+ 1. Create Platform Event-Triggered Flow
121
+ 2. Select Platform Event object
122
+ 3. Build logic with event data
123
+
124
+ ### External (CometD)
125
+
126
+ External systems can subscribe using CometD streaming:
127
+
128
+ ```
129
+ /event/Order_Update_Event__e
130
+ ```
131
+
132
+ ## Publish Behavior
133
+
134
+ ### PublishAfterCommit (Default)
135
+
136
+ - Event published after transaction commits
137
+ - If transaction rolls back, event NOT published
138
+ - **Recommended for most cases**
139
+
140
+ ### PublishImmediately
141
+
142
+ - Event published immediately
143
+ - Event still published even if transaction rolls back
144
+ - Use when external system must be notified regardless of outcome
145
+
146
+ ## Durability & Replay
147
+
148
+ ### Replay ID
149
+
150
+ Each event has a unique `ReplayId` for tracking and replay:
151
+
152
+ ```apex
153
+ String replayId = event.ReplayId;
154
+ ```
155
+
156
+ ### Resume Checkpoint
157
+
158
+ Set checkpoint to ensure durability:
159
+
160
+ ```apex
161
+ // In trigger
162
+ EventBus.TriggerContext.currentContext().setResumeCheckpoint(lastReplayId);
163
+ ```
164
+
165
+ If trigger fails after checkpoint, processing resumes from that point.
166
+
167
+ ### Retention
168
+
169
+ - High Volume events: 24 hours
170
+ - Standard Volume: 24 hours
171
+
172
+ ## Best Practices
173
+
174
+ ### Publishing
175
+
176
+ 1. **Batch events** when publishing multiple
177
+ 2. **Check SaveResults** for publish failures
178
+ 3. **Use meaningful correlation IDs** for tracking
179
+ 4. **Include timestamp** for ordering
180
+ 5. **Keep payloads small** - use IDs, not full records
181
+
182
+ ### Subscribing
183
+
184
+ 1. **Always set resume checkpoint** in triggers
185
+ 2. **Don't throw exceptions** - catch and log errors
186
+ 3. **Process idempotently** - events may replay
187
+ 4. **Keep processing lightweight** - queue heavy work
188
+ 5. **Handle duplicates** using correlation ID
189
+
190
+ ### Design
191
+
192
+ 1. **Event granularity** - not too fine, not too coarse
193
+ 2. **Include enough context** but not entire records
194
+ 3. **Version your events** if schema evolves
195
+ 4. **Document event contracts** for consumers
196
+
197
+ ## Error Handling
198
+
199
+ ### Publish Errors
200
+
201
+ ```apex
202
+ List<Database.SaveResult> results = EventBus.publish(events);
203
+ for (Integer i = 0; i < results.size(); i++) {
204
+ if (!results[i].isSuccess()) {
205
+ for (Database.Error err : results[i].getErrors()) {
206
+ System.debug('Publish failed: ' + err.getMessage());
207
+ }
208
+ }
209
+ }
210
+ ```
211
+
212
+ ### Subscriber Errors
213
+
214
+ ```apex
215
+ trigger MySubscriber on My_Event__e (after insert) {
216
+ for (My_Event__e event : Trigger.new) {
217
+ try {
218
+ processEvent(event);
219
+ } catch (Exception e) {
220
+ // Log error, don't throw
221
+ System.debug('Error processing ' + event.ReplayId + ': ' + e.getMessage());
222
+ // Create error log record
223
+ }
224
+ }
225
+
226
+ // Still set checkpoint even if some failed
227
+ EventBus.TriggerContext.currentContext().setResumeCheckpoint(lastReplayId);
228
+ }
229
+ ```
230
+
231
+ ## Monitoring
232
+
233
+ ### Setup → Platform Events
234
+
235
+ - View event definitions
236
+ - Check usage metrics
237
+ - Monitor delivery status
238
+
239
+ ### Event Delivery Failures
240
+
241
+ Check for:
242
+ - Unhandled exceptions in triggers
243
+ - Apex CPU timeout
244
+ - Governor limit errors
245
+
246
+ ### Event Publishing
247
+
248
+ Query `EventBusSubscriber` for subscription health:
249
+
250
+ ```apex
251
+ SELECT Id, Position, ExternalId, Name, Status, Tip
252
+ FROM EventBusSubscriber
253
+ WHERE Topic = 'Order_Update_Event__e'
254
+ ```
255
+
256
+ ## Limits
257
+
258
+ | Limit | Standard Volume | High Volume |
259
+ |-------|-----------------|-------------|
260
+ | Events per hour | ~2,000 | Millions |
261
+ | Retention | 24 hours | 24 hours |
262
+ | Max event size | 1 MB | 1 MB |
263
+ | Fields per event | 100 | 100 |
264
+
265
+ ## External Integration
266
+
267
+ ### Subscribe from External System
268
+
269
+ Use CometD client to connect to Streaming API:
270
+
271
+ ```
272
+ Endpoint: /cometd/62.0
273
+ Channel: /event/Order_Update_Event__e
274
+ ```
275
+
276
+ ### Publish from External System
277
+
278
+ Use REST API:
279
+
280
+ ```http
281
+ POST /services/data/v66.0/sobjects/Order_Update_Event__e
282
+ Content-Type: application/json
283
+
284
+ {
285
+ "Order_Id__c": "001xx000003NGSFAA4",
286
+ "Status__c": "Shipped"
287
+ }
288
+ ```