@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
+ # REST Callout Patterns
3
+
4
+ ## Overview
5
+
6
+ This guide covers patterns for making HTTP callouts from Salesforce Apex to external REST APIs.
7
+
8
+ ## Synchronous vs Asynchronous
9
+
10
+ ### When to Use Synchronous
11
+
12
+ - User needs immediate response
13
+ - Called from Visualforce, LWC, or Aura
14
+ - NOT triggered by DML operations
15
+ - Response required before next action
16
+
17
+ ### When to Use Asynchronous
18
+
19
+ - Called from triggers (REQUIRED)
20
+ - Fire-and-forget operations
21
+ - Background processing
22
+ - Long-running operations
23
+
24
+ ```
25
+ ┌─────────────────────────────────────────────────────────────────┐
26
+ │ CALLOUT CONTEXT DECISION │
27
+ ├─────────────────────────────────────────────────────────────────┤
28
+ │ │
29
+ │ Is this called from a trigger or after DML? │
30
+ │ ├── YES → Use Queueable with Database.AllowsCallouts │
31
+ │ └── NO → Synchronous OK │
32
+ │ │
33
+ │ Does user need immediate response? │
34
+ │ ├── YES → Synchronous (if allowed) │
35
+ │ └── NO → Consider async for better UX │
36
+ │ │
37
+ └─────────────────────────────────────────────────────────────────┘
38
+ ```
39
+
40
+ ## Basic Request Pattern
41
+
42
+ ```apex
43
+ public class RestCallout {
44
+
45
+ public static HttpResponse makeRequest(String method, String endpoint, String body) {
46
+ HttpRequest req = new HttpRequest();
47
+ req.setEndpoint('callout:MyCredential' + endpoint);
48
+ req.setMethod(method);
49
+ req.setHeader('Content-Type', 'application/json');
50
+ req.setHeader('Accept', 'application/json');
51
+ req.setTimeout(120000); // 120 seconds max
52
+
53
+ if (String.isNotBlank(body)) {
54
+ req.setBody(body);
55
+ }
56
+
57
+ return new Http().send(req);
58
+ }
59
+ }
60
+ ```
61
+
62
+ ## HTTP Methods
63
+
64
+ | Method | Use Case | Body |
65
+ |--------|----------|------|
66
+ | GET | Retrieve resource | No |
67
+ | POST | Create resource | Yes |
68
+ | PUT | Full update | Yes |
69
+ | PATCH | Partial update | Yes |
70
+ | DELETE | Remove resource | Usually No |
71
+
72
+ ## Response Handling
73
+
74
+ ### Status Code Categories
75
+
76
+ ```apex
77
+ Integer statusCode = response.getStatusCode();
78
+
79
+ if (statusCode >= 200 && statusCode < 300) {
80
+ // Success (2xx)
81
+ } else if (statusCode >= 400 && statusCode < 500) {
82
+ // Client error (4xx) - don't retry
83
+ } else if (statusCode >= 500) {
84
+ // Server error (5xx) - may retry
85
+ }
86
+ ```
87
+
88
+ ### Common Status Codes
89
+
90
+ | Code | Meaning | Action |
91
+ |------|---------|--------|
92
+ | 200 | OK | Process response |
93
+ | 201 | Created | Resource created |
94
+ | 204 | No Content | Success, no body |
95
+ | 400 | Bad Request | Fix request |
96
+ | 401 | Unauthorized | Check credentials |
97
+ | 403 | Forbidden | Check permissions |
98
+ | 404 | Not Found | Resource doesn't exist |
99
+ | 429 | Too Many Requests | Rate limited, retry later |
100
+ | 500 | Server Error | Retry with backoff |
101
+ | 503 | Service Unavailable | Retry later |
102
+
103
+ ## Error Handling Pattern
104
+
105
+ ```apex
106
+ public class ApiClient {
107
+
108
+ public static Map<String, Object> callApi(String endpoint) {
109
+ try {
110
+ HttpResponse res = makeRequest('GET', endpoint, null);
111
+
112
+ if (res.getStatusCode() == 200) {
113
+ return (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
114
+ }
115
+
116
+ // Handle specific errors
117
+ if (res.getStatusCode() == 404) {
118
+ throw new NotFoundException('Resource not found: ' + endpoint);
119
+ }
120
+
121
+ if (res.getStatusCode() == 429) {
122
+ String retryAfter = res.getHeader('Retry-After');
123
+ throw new RateLimitedException('Rate limited. Retry after: ' + retryAfter);
124
+ }
125
+
126
+ throw new ApiException('API Error: ' + res.getStatusCode() + ' - ' + res.getBody());
127
+
128
+ } catch (CalloutException e) {
129
+ // Network error, timeout, SSL error
130
+ throw new ApiException('Connection failed: ' + e.getMessage(), e);
131
+ }
132
+ }
133
+
134
+ public class ApiException extends Exception {}
135
+ public class NotFoundException extends Exception {}
136
+ public class RateLimitedException extends Exception {}
137
+ }
138
+ ```
139
+
140
+ ## Retry Pattern
141
+
142
+ ```apex
143
+ public class RetryableCallout {
144
+
145
+ private static final Integer MAX_RETRIES = 3;
146
+ private static final Set<Integer> RETRYABLE_CODES = new Set<Integer>{
147
+ 408, 429, 500, 502, 503, 504
148
+ };
149
+
150
+ public static HttpResponse callWithRetry(HttpRequest request) {
151
+ Integer attempts = 0;
152
+
153
+ while (attempts < MAX_RETRIES) {
154
+ HttpResponse res = new Http().send(request);
155
+
156
+ if (!RETRYABLE_CODES.contains(res.getStatusCode())) {
157
+ return res;
158
+ }
159
+
160
+ attempts++;
161
+ System.debug('Retry ' + attempts + ' for ' + res.getStatusCode());
162
+ }
163
+
164
+ throw new CalloutException('Max retries exceeded');
165
+ }
166
+ }
167
+ ```
168
+
169
+ ## Queueable Pattern (Async)
170
+
171
+ ```apex
172
+ public class AsyncCallout implements Queueable, Database.AllowsCallouts {
173
+
174
+ private Id recordId;
175
+
176
+ public AsyncCallout(Id recordId) {
177
+ this.recordId = recordId;
178
+ }
179
+
180
+ public void execute(QueueableContext context) {
181
+ // Query record
182
+ Account acc = [SELECT Id, Name FROM Account WHERE Id = :recordId];
183
+
184
+ // Make callout
185
+ HttpRequest req = new HttpRequest();
186
+ req.setEndpoint('callout:MyAPI/accounts');
187
+ req.setMethod('POST');
188
+ req.setBody(JSON.serialize(new Map<String, Object>{
189
+ 'name' => acc.Name,
190
+ 'sfId' => acc.Id
191
+ }));
192
+
193
+ HttpResponse res = new Http().send(req);
194
+
195
+ // Update record with result
196
+ if (res.getStatusCode() == 201) {
197
+ acc.External_Id__c = extractId(res.getBody());
198
+ update acc;
199
+ }
200
+ }
201
+
202
+ private String extractId(String body) {
203
+ Map<String, Object> result = (Map<String, Object>) JSON.deserializeUntyped(body);
204
+ return (String) result.get('id');
205
+ }
206
+ }
207
+
208
+ // Usage from trigger:
209
+ // System.enqueueJob(new AsyncCallout(accountId));
210
+ ```
211
+
212
+ ## Pagination Pattern
213
+
214
+ ```apex
215
+ public class PaginatedApiClient {
216
+
217
+ public static List<Map<String, Object>> getAllRecords(String endpoint) {
218
+ List<Map<String, Object>> allRecords = new List<Map<String, Object>>();
219
+ String nextPageUrl = endpoint;
220
+
221
+ while (String.isNotBlank(nextPageUrl)) {
222
+ HttpResponse res = makeRequest('GET', nextPageUrl, null);
223
+ Map<String, Object> response = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
224
+
225
+ // Add records from this page
226
+ List<Object> records = (List<Object>) response.get('data');
227
+ for (Object rec : records) {
228
+ allRecords.add((Map<String, Object>) rec);
229
+ }
230
+
231
+ // Get next page URL
232
+ nextPageUrl = (String) response.get('nextPage');
233
+ }
234
+
235
+ return allRecords;
236
+ }
237
+ }
238
+ ```
239
+
240
+ ## Governor Limits
241
+
242
+ | Limit | Value |
243
+ |-------|-------|
244
+ | Callouts per transaction | 100 |
245
+ | Maximum timeout | 120,000 ms (120 seconds) |
246
+ | Maximum request size | 6 MB |
247
+ | Maximum response size | 6 MB |
248
+ | Concurrent long-running requests | 10 |
249
+
250
+ ## Testing Callouts
251
+
252
+ ```apex
253
+ @isTest
254
+ private class ApiClientTest {
255
+
256
+ @isTest
257
+ static void testSuccessfulCallout() {
258
+ // Set mock
259
+ Test.setMock(HttpCalloutMock.class, new MockSuccess());
260
+
261
+ Test.startTest();
262
+ Map<String, Object> result = ApiClient.callApi('/endpoint');
263
+ Test.stopTest();
264
+
265
+ System.assertEquals('value', result.get('key'));
266
+ }
267
+
268
+ private class MockSuccess implements HttpCalloutMock {
269
+ public HttpResponse respond(HttpRequest req) {
270
+ HttpResponse res = new HttpResponse();
271
+ res.setStatusCode(200);
272
+ res.setBody('{"key": "value"}');
273
+ return res;
274
+ }
275
+ }
276
+ }
277
+ ```
278
+
279
+ ## Best Practices
280
+
281
+ 1. **Always use Named Credentials** - Never hardcode endpoints or credentials
282
+ 2. **Set appropriate timeouts** - Default may be too short for slow APIs
283
+ 3. **Handle all error cases** - Don't assume success
284
+ 4. **Log requests and responses** - Essential for debugging
285
+ 5. **Use async for trigger contexts** - Queueable with AllowsCallouts
286
+ 6. **Implement retry logic** - For transient failures
287
+ 7. **Monitor governor limits** - Especially callout count
288
+ 8. **Parse errors gracefully** - APIs return errors in various formats
@@ -0,0 +1,59 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+
3
+ # Scoring System (120 Points)
4
+
5
+ ## Category Breakdown
6
+
7
+ | Category | Points | Evaluation Criteria |
8
+ |----------|--------|---------------------|
9
+ | **Security** | 30 | Named Credentials used (no hardcoded secrets), OAuth scopes minimized, certificate auth where applicable |
10
+ | **Error Handling** | 25 | Retry logic present, timeout handling (120s max), specific exception types, logging implemented |
11
+ | **Bulkification** | 20 | Batch callouts considered, CDC bulk handling, event batching for Platform Events |
12
+ | **Architecture** | 20 | Async patterns for DML-triggered callouts, proper service layer separation, single responsibility |
13
+ | **Best Practices** | 15 | Governor limit awareness, proper HTTP methods, idempotency for retries |
14
+ | **Documentation** | 10 | Clear intent documented, endpoint versioning noted, API contract documented |
15
+
16
+ ## Scoring Thresholds
17
+
18
+ | Rating | Score Range | Description |
19
+ |--------|------------|-------------|
20
+ | Excellent | 108-120 | Production-ready, follows all best practices |
21
+ | Very Good | 90-107 | Minor improvements suggested |
22
+ | Good | 72-89 | Acceptable with noted improvements |
23
+ | Needs Work | 54-71 | Address issues before deployment |
24
+ | Block | <54 | CRITICAL issues, do not deploy |
25
+
26
+ ## Scoring Output Format
27
+
28
+ ```
29
+ 📊 INTEGRATION SCORE: XX/120 ⭐⭐⭐⭐ Rating
30
+ ════════════════════════════════════════════════════
31
+
32
+ 🔐 Security XX/30 ████████░░ XX%
33
+ ├─ Named Credentials used: ✅
34
+ ├─ No hardcoded secrets: ✅
35
+ └─ OAuth scopes minimal: ✅
36
+
37
+ ⚠️ Error Handling XX/25 ████████░░ XX%
38
+ ├─ Retry logic: ✅
39
+ ├─ Timeout handling: ✅
40
+ └─ Logging: ✅
41
+
42
+ 📦 Bulkification XX/20 ████████░░ XX%
43
+ ├─ Batch callouts: ✅
44
+ └─ Event batching: ✅
45
+
46
+ 🏗️ Architecture XX/20 ████████░░ XX%
47
+ ├─ Async patterns: ✅
48
+ └─ Service separation: ✅
49
+
50
+ ✅ Best Practices XX/15 ████████░░ XX%
51
+ ├─ Governor limits: ✅
52
+ └─ Idempotency: ✅
53
+
54
+ 📝 Documentation XX/10 ████████░░ XX%
55
+ ├─ Clear intent: ✅
56
+ └─ API versioning: ✅
57
+
58
+ ════════════════════════════════════════════════════
59
+ ```
@@ -0,0 +1,248 @@
1
+ <!-- Parent: building-sf-integrations/SKILL.md -->
2
+ # Integration Security Best Practices
3
+
4
+ ## Overview
5
+
6
+ Security is critical for integrations. This guide covers best practices for securing Salesforce integrations with external systems.
7
+
8
+ ## Credential Management
9
+
10
+ ### DO: Use Named Credentials
11
+
12
+ ```apex
13
+ // ✅ CORRECT - Named Credential handles auth
14
+ HttpRequest req = new HttpRequest();
15
+ req.setEndpoint('callout:MySecureAPI/resource');
16
+ ```
17
+
18
+ ### DON'T: Hardcode Credentials
19
+
20
+ ```apex
21
+ // ❌ WRONG - Never hardcode credentials
22
+ req.setHeader('Authorization', 'Bearer sk_live_abc123...');
23
+ req.setEndpoint('https://api.example.com');
24
+ ```
25
+
26
+ ### Credential Storage Rules
27
+
28
+ | Item | Storage Location | Never Store In |
29
+ |------|------------------|----------------|
30
+ | API Keys | Named Credential | Apex code, Custom Settings |
31
+ | Client Secrets | Named Credential / External Credential | Source control |
32
+ | Certificates | Certificate & Key Management | Static Resources |
33
+ | Passwords | Named Credential | Custom Metadata |
34
+
35
+ ## OAuth Best Practices
36
+
37
+ ### Scope Minimization
38
+
39
+ Request only necessary scopes:
40
+
41
+ ```
42
+ ✅ read:orders write:orders
43
+ ❌ admin:* read:* write:*
44
+ ```
45
+
46
+ ### Token Handling
47
+
48
+ - Never log access tokens
49
+ - Don't expose tokens in error messages
50
+ - Use short-lived tokens when possible
51
+ - Implement token refresh handling
52
+
53
+ ### PKCE for Public Clients
54
+
55
+ For mobile or SPA clients:
56
+
57
+ ```
58
+ Use Authorization Code with PKCE, not Implicit flow
59
+ ```
60
+
61
+ ## Network Security
62
+
63
+ ### Remote Site Settings
64
+
65
+ - Only allow necessary domains
66
+ - Don't use wildcard domains
67
+ - Review and audit regularly
68
+
69
+ ### Certificate Validation
70
+
71
+ - Use trusted CA certificates
72
+ - Don't disable SSL/TLS verification
73
+ - Monitor certificate expiration
74
+
75
+ ### IP Restrictions
76
+
77
+ For Connected Apps:
78
+ - Configure IP relaxation carefully
79
+ - Use "Enforce IP restrictions" when possible
80
+
81
+ ## Input Validation
82
+
83
+ ### Validate External Data
84
+
85
+ ```apex
86
+ // Validate before processing
87
+ public static void processExternalData(String externalId) {
88
+ // Validate format
89
+ if (!Pattern.matches('[A-Za-z0-9]{10,20}', externalId)) {
90
+ throw new ValidationException('Invalid external ID format');
91
+ }
92
+
93
+ // Sanitize for SOQL
94
+ String safeId = String.escapeSingleQuotes(externalId);
95
+ }
96
+ ```
97
+
98
+ ### Output Encoding
99
+
100
+ ```apex
101
+ // Encode data sent to external systems
102
+ String encodedData = EncodingUtil.urlEncode(userData, 'UTF-8');
103
+ ```
104
+
105
+ ## Error Handling Security
106
+
107
+ ### Don't Expose Internal Details
108
+
109
+ ```apex
110
+ // ❌ WRONG - Exposes internal structure
111
+ throw new CalloutException('Failed: ' + response.getBody());
112
+
113
+ // ✅ CORRECT - User-friendly, log details separately
114
+ System.debug(LoggingLevel.ERROR, 'API Error: ' + response.getBody());
115
+ throw new CalloutException('Unable to complete request. Contact support.');
116
+ ```
117
+
118
+ ### Log Securely
119
+
120
+ ```apex
121
+ // ❌ WRONG - Logs sensitive data
122
+ System.debug('Request: ' + JSON.serialize(request)); // May contain PII
123
+
124
+ // ✅ CORRECT - Redact sensitive fields
125
+ System.debug('Request to: ' + endpoint + ', Status: ' + statusCode);
126
+ ```
127
+
128
+ ## API Security Patterns
129
+
130
+ ### Rate Limiting Awareness
131
+
132
+ ```apex
133
+ if (response.getStatusCode() == 429) {
134
+ String retryAfter = response.getHeader('Retry-After');
135
+ // Implement backoff, don't hammer the API
136
+ }
137
+ ```
138
+
139
+ ### Idempotency Keys
140
+
141
+ For POST requests that shouldn't duplicate:
142
+
143
+ ```apex
144
+ req.setHeader('Idempotency-Key', generateUniqueKey());
145
+ ```
146
+
147
+ ### Request Signing
148
+
149
+ For APIs requiring signature:
150
+
151
+ ```apex
152
+ String signature = generateHmacSignature(payload, secretKey);
153
+ req.setHeader('X-Signature', signature);
154
+ ```
155
+
156
+ ## User Context Security
157
+
158
+ ### Per-User vs Named Principal
159
+
160
+ | Scenario | Use |
161
+ |----------|-----|
162
+ | User-specific data access | Per-User Principal |
163
+ | Background/batch jobs | Named Principal |
164
+ | Service integrations | Named Principal |
165
+ | User-initiated with audit | Per-User Principal |
166
+
167
+ ### Audit Logging
168
+
169
+ ```apex
170
+ public static void logIntegrationActivity(String operation, Id userId, String externalSystem) {
171
+ Integration_Log__c log = new Integration_Log__c(
172
+ Operation__c = operation,
173
+ User__c = userId,
174
+ External_System__c = externalSystem,
175
+ Timestamp__c = Datetime.now()
176
+ );
177
+ insert log;
178
+ }
179
+ ```
180
+
181
+ ## Platform Event Security
182
+
183
+ ### Sensitive Data in Events
184
+
185
+ - Don't include PII in event payloads when avoidable
186
+ - Use record IDs and query for details
187
+ - Consider encryption for sensitive fields
188
+
189
+ ### Event Consumer Validation
190
+
191
+ ```apex
192
+ trigger SecureEventHandler on My_Event__e (after insert) {
193
+ for (My_Event__e event : Trigger.new) {
194
+ // Validate event source/origin if possible
195
+ if (!isValidEventSource(event)) {
196
+ System.debug(LoggingLevel.WARN, 'Suspicious event: ' + event.ReplayId);
197
+ continue;
198
+ }
199
+ processEvent(event);
200
+ }
201
+ }
202
+ ```
203
+
204
+ ## Security Checklist
205
+
206
+ ### Before Deployment
207
+
208
+ - [ ] Named Credentials used for all external calls
209
+ - [ ] No hardcoded credentials in code
210
+ - [ ] OAuth scopes minimized
211
+ - [ ] Remote Site Settings restricted
212
+ - [ ] Error messages don't expose internals
213
+ - [ ] Sensitive data not logged
214
+ - [ ] Input validation implemented
215
+ - [ ] Rate limiting handled
216
+ - [ ] Certificate expiration monitored
217
+
218
+ ### Regular Review
219
+
220
+ - [ ] Audit Named Credential usage
221
+ - [ ] Review integration user permissions
222
+ - [ ] Check for unused credentials
223
+ - [ ] Monitor integration error logs
224
+ - [ ] Validate certificate validity
225
+ - [ ] Review OAuth app authorizations
226
+
227
+ ## Compliance Considerations
228
+
229
+ ### GDPR / Data Privacy
230
+
231
+ - Minimize data transferred
232
+ - Document data flows
233
+ - Implement data deletion for integrated records
234
+ - Encrypt PII in transit and at rest
235
+
236
+ ### SOC 2 / Security Audits
237
+
238
+ - Maintain integration documentation
239
+ - Log all external access
240
+ - Implement change management
241
+ - Regular security assessments
242
+
243
+ ### HIPAA (Healthcare)
244
+
245
+ - Business Associate Agreements
246
+ - Encryption requirements
247
+ - Access logging
248
+ - Minimum necessary standard
@@ -0,0 +1,100 @@
1
+ # building-sf-integrations Helper Scripts
2
+
3
+ Automation scripts for configuring Salesforce integrations without manual UI steps.
4
+
5
+ > **Mirror note:** These files mirror the canonical generic helpers in the repository root `scripts/` directory. Keep both locations aligned until the packaging layout is consolidated.
6
+
7
+ ## Scripts
8
+
9
+ | Script | Purpose | Auth Type |
10
+ |--------|---------|-----------|
11
+ | `configure-named-credential.sh` | Set API keys via ConnectApi | Enhanced Named Credentials |
12
+ | `set-api-credential.sh` | Store keys in Custom Settings | Legacy (dev/test) |
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Enhanced Named Credentials (recommended for production)
18
+ ./configure-named-credential.sh <external-credential-name> <principal-name> <org-alias>
19
+
20
+ # Custom Settings (legacy, for dev/test)
21
+ ./set-api-credential.sh <setting-name> - <org-alias>
22
+ ```
23
+
24
+ ## Prerequisites
25
+
26
+ - **Salesforce CLI v2+** (`sf` command)
27
+ - **Authenticated org** (`sf org login web -a <alias>`)
28
+ - **Deployed metadata** (External Credential, Named Credential, CSP)
29
+
30
+ ## Usage Examples
31
+
32
+ ### Configure Named Credential
33
+
34
+ ```bash
35
+ # Interactive mode - prompts for API key securely
36
+ ./configure-named-credential.sh VisualCrossingWeather weatherAPIKey MyDevOrg
37
+
38
+ # The script will:
39
+ # 1. Validate org connection
40
+ # 2. Check External Credential exists
41
+ # 3. Prompt for API key (hidden input)
42
+ # 4. Execute ConnectApi Apex to store encrypted
43
+ ```
44
+
45
+ ### Custom Settings (Legacy)
46
+
47
+ ```bash
48
+ # Secure input (dash prompts for hidden input)
49
+ ./set-api-credential.sh WeatherAPI - MyDevOrg
50
+
51
+ # Direct input (less secure, for CI/CD)
52
+ ./set-api-credential.sh WeatherAPI sk_live_abc123 MyDevOrg
53
+ ```
54
+
55
+ ## Templates
56
+
57
+ The `templates/` directory contains customizable scripts for new integrations:
58
+
59
+ | Template | Purpose |
60
+ |----------|---------|
61
+ | `setup-credentials-with-csp.sh` | Full setup with CSP Trusted Sites |
62
+
63
+ ### Using Templates
64
+
65
+ ```bash
66
+ # Copy template for your integration
67
+ cp templates/setup-credentials-with-csp.sh my-integration-setup.sh
68
+
69
+ # Edit configuration variables
70
+ # - SKILL_NAME
71
+ # - CSP_NAME
72
+ # - API_KEY_URL
73
+ ```
74
+
75
+ ## Auto-Run Behavior
76
+
77
+ When you create credential metadata files, Claude will automatically suggest running these scripts:
78
+
79
+ | File Pattern | Suggested Script |
80
+ |--------------|------------------|
81
+ | `*.namedCredential-meta.xml` | `configure-named-credential.sh` |
82
+ | `*.externalCredential-meta.xml` | `configure-named-credential.sh` |
83
+
84
+ ## Troubleshooting
85
+
86
+ **"sf: command not found"**
87
+ - Install Salesforce CLI: `npm install -g @salesforce/cli`
88
+
89
+ **"Not authenticated"**
90
+ - Run: `sf org login web -a <alias>`
91
+
92
+ **"External Credential not found"**
93
+ - Deploy External Credential first
94
+ - Check developer name matches
95
+
96
+ ## Related Documentation
97
+
98
+ - [Named Credentials Automation Guide](../references/named-credentials-automation.md)
99
+ - [Named Credentials Template Reference](../references/named-credentials-guide.md)
100
+ - [Security Best Practices](../references/security-best-practices.md)