@salesforce/afv-skills 1.8.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/package.json +1 -1
  2. package/skills/activating-datacloud/CREDITS.md +5 -0
  3. package/skills/activating-datacloud/README.md +39 -0
  4. package/skills/activating-datacloud/SKILL.md +118 -0
  5. package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
  6. package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
  7. package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
  8. package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
  9. package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
  10. package/skills/building-omnistudio-callable-apex/README.md +80 -0
  11. package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
  12. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
  13. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
  14. package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
  15. package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
  16. package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
  17. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
  18. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
  19. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
  20. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
  21. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
  22. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
  23. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
  24. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
  25. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
  26. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
  27. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
  28. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
  29. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
  30. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
  31. package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
  32. package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
  33. package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
  34. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
  35. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
  36. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
  37. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
  38. package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
  39. package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
  40. package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
  41. package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
  42. package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
  43. package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
  44. package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
  45. package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
  46. package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
  47. package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
  48. package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
  49. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
  50. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
  51. package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
  52. package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
  53. package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
  54. package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
  55. package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
  56. package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
  57. package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
  58. package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
  59. package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
  60. package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
  61. package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
  62. package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
  63. package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
  64. package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
  65. package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
  66. package/skills/building-sf-integrations/CREDITS.md +5 -0
  67. package/skills/building-sf-integrations/README.md +95 -0
  68. package/skills/building-sf-integrations/SKILL.md +192 -0
  69. package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
  70. package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
  71. package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
  72. package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
  73. package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
  74. package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
  75. package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
  76. package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
  77. package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
  78. package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
  79. package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
  80. package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
  81. package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
  82. package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
  83. package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
  84. package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
  85. package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
  86. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
  87. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
  88. package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
  89. package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
  90. package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
  91. package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
  92. package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
  93. package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
  94. package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
  95. package/skills/building-sf-integrations/references/cli-reference.md +94 -0
  96. package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
  97. package/skills/building-sf-integrations/references/event-patterns.md +838 -0
  98. package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
  99. package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
  100. package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
  101. package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
  102. package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
  103. package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
  104. package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
  105. package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
  106. package/skills/building-sf-integrations/scripts/README.md +100 -0
  107. package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
  108. package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
  109. package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
  110. package/skills/configuring-connected-apps/CREDITS.md +3 -0
  111. package/skills/configuring-connected-apps/README.md +99 -0
  112. package/skills/configuring-connected-apps/SKILL.md +224 -0
  113. package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
  114. package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
  115. package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
  116. package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
  117. package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
  118. package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
  119. package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
  120. package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
  121. package/skills/configuring-connected-apps/references/example-usage.md +256 -0
  122. package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
  123. package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
  124. package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
  125. package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
  126. package/skills/connecting-datacloud/CREDITS.md +5 -0
  127. package/skills/connecting-datacloud/README.md +59 -0
  128. package/skills/connecting-datacloud/SKILL.md +155 -0
  129. package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
  130. package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
  131. package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
  132. package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
  133. package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
  134. package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
  135. package/skills/debugging-apex-logs/CREDITS.md +22 -0
  136. package/skills/debugging-apex-logs/README.md +74 -0
  137. package/skills/debugging-apex-logs/SKILL.md +172 -0
  138. package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
  139. package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
  140. package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
  141. package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
  142. package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
  143. package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
  144. package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
  145. package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
  146. package/skills/debugging-apex-logs/references/common-issues.md +68 -0
  147. package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
  148. package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
  149. package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
  150. package/skills/deploying-metadata/CREDITS.md +25 -0
  151. package/skills/deploying-metadata/README.md +104 -0
  152. package/skills/deploying-metadata/SKILL.md +214 -0
  153. package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
  154. package/skills/deploying-metadata/assets/package.xml +121 -0
  155. package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
  156. package/skills/deploying-metadata/references/deploy.sh +73 -0
  157. package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
  158. package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
  159. package/skills/deploying-metadata/references/orchestration.md +183 -0
  160. package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
  161. package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
  162. package/skills/deploying-omnistudio-datapacks/README.md +88 -0
  163. package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
  164. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
  165. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
  166. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
  167. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
  168. package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
  169. package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
  170. package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
  171. package/skills/developing-agentforce/references/actions-reference.md +8 -8
  172. package/skills/fetching-salesforce-docs/README.md +66 -0
  173. package/skills/fetching-salesforce-docs/SKILL.md +209 -0
  174. package/skills/fetching-salesforce-docs/requirements.txt +2 -0
  175. package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
  176. package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
  177. package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
  178. package/skills/generating-apex/CREDITS.md +1 -26
  179. package/skills/generating-apex-test/CREDITS.md +2 -27
  180. package/skills/generating-lwc-components/CREDITS.md +5 -0
  181. package/skills/generating-lwc-components/README.md +126 -0
  182. package/skills/generating-lwc-components/SKILL.md +191 -0
  183. package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
  184. package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
  185. package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
  186. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
  187. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
  188. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
  189. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
  190. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
  191. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
  192. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
  193. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
  194. package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
  195. package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
  196. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
  197. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
  198. package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
  199. package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
  200. package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
  201. package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
  202. package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
  203. package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
  204. package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
  205. package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
  206. package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
  207. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
  208. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
  209. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
  210. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
  211. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
  212. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
  213. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
  214. package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
  215. package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
  216. package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
  217. package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
  218. package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
  219. package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
  220. package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
  221. package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
  222. package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
  223. package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
  224. package/skills/generating-lwc-components/references/advanced-features.md +108 -0
  225. package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
  226. package/skills/generating-lwc-components/references/cli-commands.md +545 -0
  227. package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
  228. package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
  229. package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
  230. package/skills/generating-lwc-components/references/lms-guide.md +860 -0
  231. package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
  232. package/skills/generating-lwc-components/references/performance-guide.md +861 -0
  233. package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
  234. package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
  235. package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
  236. package/skills/generating-lwc-components/references/state-management.md +642 -0
  237. package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
  238. package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
  239. package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
  240. package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
  241. package/skills/generating-mermaid-diagrams/README.md +114 -0
  242. package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
  243. package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
  244. package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
  245. package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
  246. package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
  247. package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
  248. package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
  249. package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
  250. package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
  251. package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
  252. package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
  253. package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
  254. package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
  255. package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
  256. package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
  257. package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
  258. package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
  259. package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
  260. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
  261. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
  262. package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
  263. package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
  264. package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
  265. package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
  266. package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
  267. package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
  268. package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
  269. package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
  270. package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
  271. package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
  272. package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
  273. package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
  274. package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
  275. package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
  276. package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
  277. package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
  278. package/skills/generating-visual-diagrams/CREDITS.md +80 -0
  279. package/skills/generating-visual-diagrams/README.md +83 -0
  280. package/skills/generating-visual-diagrams/SKILL.md +208 -0
  281. package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
  282. package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
  283. package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
  284. package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
  285. package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
  286. package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
  287. package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
  288. package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
  289. package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
  290. package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
  291. package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
  292. package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
  293. package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
  294. package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
  295. package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
  296. package/skills/handling-sf-data/CREDITS.md +5 -0
  297. package/skills/handling-sf-data/README.md +112 -0
  298. package/skills/handling-sf-data/SKILL.md +235 -0
  299. package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
  300. package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
  301. package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
  302. package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
  303. package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
  304. package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
  305. package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
  306. package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
  307. package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
  308. package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
  309. package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
  310. package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
  311. package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
  312. package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
  313. package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
  314. package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
  315. package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
  316. package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
  317. package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
  318. package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
  319. package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
  320. package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
  321. package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
  322. package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
  323. package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
  324. package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
  325. package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
  326. package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
  327. package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
  328. package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
  329. package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
  330. package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
  331. package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
  332. package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
  333. package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
  334. package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
  335. package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
  336. package/skills/handling-sf-data/references/orchestration.md +174 -0
  337. package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
  338. package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
  339. package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
  340. package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
  341. package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
  342. package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
  343. package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
  344. package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
  345. package/skills/harmonizing-datacloud/CREDITS.md +3 -0
  346. package/skills/harmonizing-datacloud/README.md +31 -0
  347. package/skills/harmonizing-datacloud/SKILL.md +117 -0
  348. package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
  349. package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
  350. package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
  351. package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
  352. package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
  353. package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
  354. package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
  355. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
  356. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
  357. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
  358. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
  359. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
  360. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
  361. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
  362. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
  363. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
  364. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
  365. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
  366. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
  367. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
  368. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
  369. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
  370. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
  371. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
  372. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
  373. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
  374. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
  375. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
  376. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
  377. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
  378. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
  379. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
  380. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
  381. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
  382. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
  383. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
  384. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
  385. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
  386. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
  387. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
  388. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
  389. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
  390. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
  391. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
  392. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
  393. package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
  394. package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
  395. package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
  396. package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
  397. package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
  398. package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
  399. package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
  400. package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
  401. package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
  402. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
  403. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
  404. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
  405. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
  406. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
  407. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
  408. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
  409. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
  410. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
  411. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
  412. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
  413. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
  414. package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
  415. package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
  416. package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
  417. package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
  418. package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
  419. package/skills/orchestrating-datacloud/CREDITS.md +15 -0
  420. package/skills/orchestrating-datacloud/README.md +129 -0
  421. package/skills/orchestrating-datacloud/SKILL.md +236 -0
  422. package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
  423. package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
  424. package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
  425. package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
  426. package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
  427. package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
  428. package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
  429. package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
  430. package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
  431. package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
  432. package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
  433. package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
  434. package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
  435. package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
  436. package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
  437. package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
  438. package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
  439. package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
  440. package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
  441. package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
  442. package/skills/preparing-datacloud/CREDITS.md +7 -0
  443. package/skills/preparing-datacloud/README.md +51 -0
  444. package/skills/preparing-datacloud/SKILL.md +191 -0
  445. package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
  446. package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
  447. package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
  448. package/skills/querying-soql/CREDITS.md +21 -0
  449. package/skills/querying-soql/README.md +41 -0
  450. package/skills/querying-soql/SKILL.md +143 -0
  451. package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
  452. package/skills/querying-soql/assets/basic-queries.soql +188 -0
  453. package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
  454. package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
  455. package/skills/querying-soql/assets/relationship-queries.soql +203 -0
  456. package/skills/querying-soql/assets/selector-class.cls +219 -0
  457. package/skills/querying-soql/references/anti-patterns.md +348 -0
  458. package/skills/querying-soql/references/cli-commands.md +358 -0
  459. package/skills/querying-soql/references/field-coverage-rules.md +514 -0
  460. package/skills/querying-soql/references/query-optimization.md +142 -0
  461. package/skills/querying-soql/references/selector-patterns.md +479 -0
  462. package/skills/querying-soql/references/soql-reference.md +227 -0
  463. package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
  464. package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
  465. package/skills/retrieving-datacloud/CREDITS.md +7 -0
  466. package/skills/retrieving-datacloud/README.md +44 -0
  467. package/skills/retrieving-datacloud/SKILL.md +120 -0
  468. package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
  469. package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
  470. package/skills/running-apex-tests/CREDITS.md +22 -0
  471. package/skills/running-apex-tests/README.md +94 -0
  472. package/skills/running-apex-tests/SKILL.md +158 -0
  473. package/skills/running-apex-tests/assets/basic-test.cls +169 -0
  474. package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
  475. package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
  476. package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
  477. package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
  478. package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
  479. package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
  480. package/skills/running-apex-tests/references/cli-commands.md +289 -0
  481. package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
  482. package/skills/running-apex-tests/references/performance-optimization.md +283 -0
  483. package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
  484. package/skills/running-apex-tests/references/test-patterns.md +154 -0
  485. package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
  486. package/skills/segmenting-datacloud/CREDITS.md +3 -0
  487. package/skills/segmenting-datacloud/README.md +36 -0
  488. package/skills/segmenting-datacloud/SKILL.md +115 -0
@@ -0,0 +1,660 @@
1
+ <!-- Parent: configuring-connected-apps/SKILL.md -->
2
+ # OAuth Flows Reference for Connected Apps
3
+
4
+ Detailed OAuth flow patterns, configuration examples, and implementation guidance for the configuring-connected-apps skill.
5
+
6
+ ---
7
+
8
+ ## Flow Selection Decision Tree
9
+
10
+ ```
11
+ START
12
+
13
+ ├─ Do you have a backend server?
14
+ │ ├─ YES: Can it securely store secrets?
15
+ │ │ ├─ YES: Authorization Code Flow (Web Server)
16
+ │ │ └─ NO: Authorization Code + PKCE (SPA/Mobile)
17
+ │ │
18
+ │ └─ NO: Is this server-to-server?
19
+ │ ├─ YES: JWT Bearer Flow
20
+ │ └─ NO: Device Authorization Flow (CLI/IoT)
21
+
22
+ └─ Is this for a specific integration user?
23
+ ├─ YES: JWT Bearer Flow
24
+ └─ NO: Authorization Code Flow
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Authorization Code Flow (Web Server)
30
+
31
+ ### When to Use
32
+ - Web applications with backend server
33
+ - Can securely store consumer secret
34
+ - User-interactive flow needed
35
+ - Examples: Portal, Integration Hub, Admin Console
36
+
37
+ ### Connected App Configuration
38
+
39
+ **Minimal scopes for API access**:
40
+ ```xml
41
+ <oauthConfig>
42
+ <callbackUrl>https://app.example.com/oauth/callback</callbackUrl>
43
+ <scopes>Api</scopes>
44
+ <scopes>RefreshToken</scopes>
45
+ <isConsumerSecretOptional>false</isConsumerSecretOptional>
46
+ </oauthConfig>
47
+ ```
48
+
49
+ **With OpenID Connect**:
50
+ ```xml
51
+ <oauthConfig>
52
+ <callbackUrl>https://app.example.com/oauth/callback</callbackUrl>
53
+ <scopes>Api</scopes>
54
+ <scopes>RefreshToken</scopes>
55
+ <scopes>OpenID</scopes>
56
+ <isIdTokenEnabled>true</isIdTokenEnabled>
57
+ <isConsumerSecretOptional>false</isConsumerSecretOptional>
58
+ </oauthConfig>
59
+ ```
60
+
61
+ ### Security Checklist
62
+ - [ ] HTTPS callback URL (no localhost in production)
63
+ - [ ] Consumer secret stored in environment variables (never in code)
64
+ - [ ] State parameter validated (CSRF protection)
65
+ - [ ] Authorization code used only once
66
+ - [ ] Refresh token rotation enabled
67
+ - [ ] IP restrictions configured (optional)
68
+
69
+ ### Common Issues
70
+
71
+ **Problem**: "redirect_uri_mismatch" error
72
+ - **Cause**: Callback URL doesn't match exactly
73
+ - **Fix**: Ensure exact match including protocol, domain, path, and query parameters
74
+
75
+ **Problem**: "invalid_client_id" error
76
+ - **Cause**: Consumer key incorrect or app not deployed
77
+ - **Fix**: Verify consumer key from Setup > App Manager
78
+
79
+ ---
80
+
81
+ ## Authorization Code + PKCE (Public Clients)
82
+
83
+ ### When to Use
84
+ - Single Page Applications (React, Vue, Angular)
85
+ - Mobile apps (iOS, Android)
86
+ - Desktop apps
87
+ - Any client that cannot securely store secrets
88
+
89
+ ### Connected App Configuration
90
+
91
+ ```xml
92
+ <oauthConfig>
93
+ <callbackUrl>myapp://oauth/callback</callbackUrl>
94
+ <scopes>Api</scopes>
95
+ <scopes>RefreshToken</scopes>
96
+ <isConsumerSecretOptional>true</isConsumerSecretOptional>
97
+ <isPkceRequired>true</isPkceRequired>
98
+ </oauthConfig>
99
+
100
+ <oauthPolicy>
101
+ <refreshTokenPolicy>infinite</refreshTokenPolicy>
102
+ <isRefreshTokenRotationEnabled>true</isRefreshTokenRotationEnabled>
103
+ </oauthPolicy>
104
+ ```
105
+
106
+ ### External Client App Configuration
107
+
108
+ ```xml
109
+ <!-- ecaGlblOauth-meta.xml -->
110
+ <ExtlClntAppGlobalOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
111
+ <callbackUrl>myapp://oauth/callback</callbackUrl>
112
+ <externalClientApplication>MyMobileApp</externalClientApplication>
113
+ <isConsumerSecretOptional>true</isConsumerSecretOptional>
114
+ <isPkceRequired>true</isPkceRequired>
115
+ <isSecretRequiredForRefreshToken>false</isSecretRequiredForRefreshToken>
116
+ <label>Mobile App OAuth Settings</label>
117
+ </ExtlClntAppGlobalOauthSettings>
118
+ ```
119
+
120
+ ### Implementation Pattern (JavaScript)
121
+
122
+ ```javascript
123
+ // Generate PKCE verifier and challenge
124
+ function generatePKCE() {
125
+ const array = new Uint8Array(32);
126
+ crypto.getRandomValues(array);
127
+ const codeVerifier = base64URLEncode(array);
128
+
129
+ return crypto.subtle.digest('SHA-256', new TextEncoder().encode(codeVerifier))
130
+ .then(buffer => ({
131
+ codeVerifier,
132
+ codeChallenge: base64URLEncode(new Uint8Array(buffer))
133
+ }));
134
+ }
135
+
136
+ // Store verifier in sessionStorage (cleared on close)
137
+ const { codeVerifier, codeChallenge } = await generatePKCE();
138
+ sessionStorage.setItem('pkce_verifier', codeVerifier);
139
+
140
+ // Authorization URL
141
+ const authUrl = `https://login.salesforce.com/services/oauth2/authorize?` +
142
+ `response_type=code` +
143
+ `&client_id=${CLIENT_ID}` +
144
+ `&redirect_uri=${REDIRECT_URI}` +
145
+ `&scope=api%20refresh_token` +
146
+ `&state=${STATE}` +
147
+ `&code_challenge=${codeChallenge}` +
148
+ `&code_challenge_method=S256`;
149
+ ```
150
+
151
+ ### Security Checklist
152
+ - [ ] PKCE required in Connected App config
153
+ - [ ] Consumer secret optional
154
+ - [ ] Refresh token rotation enabled
155
+ - [ ] Code verifier stored securely (sessionStorage, keychain)
156
+ - [ ] State parameter validated
157
+ - [ ] Deep link callback handled securely (mobile)
158
+
159
+ ---
160
+
161
+ ## JWT Bearer Flow (Server-to-Server)
162
+
163
+ ### When to Use
164
+ - CI/CD pipelines (GitHub Actions, Jenkins)
165
+ - Backend integrations without user interaction
166
+ - Service accounts
167
+ - Scheduled jobs
168
+
169
+ ### Prerequisites
170
+
171
+ **1. Generate X.509 Certificate**:
172
+ ```bash
173
+ # Generate private key
174
+ openssl genrsa -out server.key 2048
175
+
176
+ # Generate certificate signing request
177
+ openssl req -new -key server.key -out server.csr
178
+
179
+ # Self-sign certificate (valid 1 year)
180
+ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
181
+ ```
182
+
183
+ **2. Upload to Salesforce**:
184
+ - Setup > Certificate and Key Management > Create Self-Signed Certificate
185
+ - Or use the certificate from step 1
186
+
187
+ ### Connected App Configuration
188
+
189
+ ```xml
190
+ <oauthConfig>
191
+ <certificate>JWTAuthCertificate</certificate>
192
+ <consumerKey>AUTO_GENERATED</consumerKey>
193
+ <scopes>Api</scopes>
194
+ <scopes>Web</scopes>
195
+ <isAdminApproved>true</isAdminApproved>
196
+ </oauthConfig>
197
+
198
+ <oauthPolicy>
199
+ <ipRelaxation>ENFORCE</ipRelaxation>
200
+ </oauthPolicy>
201
+ ```
202
+
203
+ **Important**: No `callbackUrl` needed for JWT Bearer flow.
204
+
205
+ ### Pre-Authorization
206
+
207
+ **Option 1: Permission Set**
208
+ ```xml
209
+ <!-- permissionsets/IntegrationUser.permissionset-meta.xml -->
210
+ <PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata">
211
+ <label>API Integration User</label>
212
+ <connectedAppSettings>
213
+ <connectedApp>MyJWTApp</connectedApp>
214
+ <enabled>true</enabled>
215
+ </connectedAppSettings>
216
+ <hasActivationRequired>false</hasActivationRequired>
217
+ </PermissionSet>
218
+ ```
219
+
220
+ Assign to integration user: Setup > Users > [User] > Permission Set Assignments
221
+
222
+ **Option 2: Profile**
223
+ Setup > Manage Connected Apps > [App] > Edit Policies > Permitted Users = "Admin approved users are pre-authorized"
224
+
225
+ ### Implementation Pattern (Node.js)
226
+
227
+ ```javascript
228
+ const jwt = require('jsonwebtoken');
229
+ const axios = require('axios');
230
+ const fs = require('fs');
231
+
232
+ async function getAccessToken() {
233
+ const privateKey = fs.readFileSync('server.key', 'utf8');
234
+
235
+ const claims = {
236
+ iss: process.env.CONSUMER_KEY,
237
+ sub: 'integration@company.com', // Pre-authorized user
238
+ aud: 'https://login.salesforce.com',
239
+ exp: Math.floor(Date.now() / 1000) + 300 // 5 min
240
+ };
241
+
242
+ const assertion = jwt.sign(claims, privateKey, { algorithm: 'RS256' });
243
+
244
+ const response = await axios.post('https://login.salesforce.com/services/oauth2/token',
245
+ new URLSearchParams({
246
+ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
247
+ assertion: assertion
248
+ })
249
+ );
250
+
251
+ return response.data.access_token;
252
+ }
253
+ ```
254
+
255
+ ### Security Checklist
256
+ - [ ] Private key stored securely (secrets manager, not in repo)
257
+ - [ ] Certificate uploaded to Salesforce
258
+ - [ ] User pre-authorized via Permission Set
259
+ - [ ] IP restrictions configured
260
+ - [ ] Token expiration set (exp claim)
261
+ - [ ] Audience (aud) set correctly (login vs test.salesforce.com)
262
+
263
+ ### Common Issues
264
+
265
+ **Problem**: "user hasn't approved this consumer" error
266
+ - **Cause**: User not pre-authorized
267
+ - **Fix**: Assign Permission Set or configure admin pre-approval
268
+
269
+ **Problem**: "invalid_grant" error
270
+ - **Cause**: Certificate mismatch or expired token
271
+ - **Fix**: Verify certificate name matches `<certificate>` tag, check exp claim
272
+
273
+ ---
274
+
275
+ ## Device Authorization Flow
276
+
277
+ ### When to Use
278
+ - CLI tools (sf CLI, custom CLIs)
279
+ - Smart TVs, Set-top boxes
280
+ - IoT devices without keyboard
281
+ - Any device with limited input capability
282
+
283
+ ### Connected App Configuration
284
+
285
+ ```xml
286
+ <oauthConfig>
287
+ <callbackUrl>http://localhost:8080</callbackUrl>
288
+ <scopes>Api</scopes>
289
+ <scopes>RefreshToken</scopes>
290
+ <isConsumerSecretOptional>true</isConsumerSecretOptional>
291
+ </oauthConfig>
292
+ ```
293
+
294
+ ### Implementation Pattern (Python)
295
+
296
+ ```python
297
+ import requests
298
+ import time
299
+
300
+ CLIENT_ID = 'your_consumer_key'
301
+ DEVICE_CODE_URL = 'https://login.salesforce.com/services/oauth2/device/code'
302
+ TOKEN_URL = 'https://login.salesforce.com/services/oauth2/token'
303
+
304
+ # Step 1: Request device code
305
+ response = requests.post(DEVICE_CODE_URL, data={
306
+ 'client_id': CLIENT_ID,
307
+ 'scope': 'api refresh_token'
308
+ })
309
+ data = response.json()
310
+
311
+ # Step 2: Display user code
312
+ print(f"Visit: {data['verification_uri']}")
313
+ print(f"Enter code: {data['user_code']}")
314
+
315
+ # Step 3: Poll for token
316
+ device_code = data['device_code']
317
+ interval = data['interval'] # Polling interval in seconds
318
+
319
+ while True:
320
+ time.sleep(interval)
321
+
322
+ token_response = requests.post(TOKEN_URL, data={
323
+ 'grant_type': 'urn:ietf:params:oauth:grant-type:device_code',
324
+ 'client_id': CLIENT_ID,
325
+ 'code': device_code
326
+ })
327
+
328
+ if token_response.status_code == 200:
329
+ tokens = token_response.json()
330
+ print(f"Access Token: {tokens['access_token']}")
331
+ break
332
+ elif token_response.json().get('error') == 'authorization_pending':
333
+ continue # User hasn't authorized yet
334
+ else:
335
+ print(f"Error: {token_response.json()}")
336
+ break
337
+ ```
338
+
339
+ ### Security Checklist
340
+ - [ ] Consumer secret optional
341
+ - [ ] Polling interval respected (don't spam)
342
+ - [ ] Device code expires after timeout
343
+ - [ ] Refresh token stored securely
344
+
345
+ ---
346
+
347
+ ## Client Credentials Flow (ECA Only)
348
+
349
+ ### When to Use
350
+ - Service accounts (not tied to specific user)
351
+ - Background processes
352
+ - Microservices
353
+ - Requires External Client App (not available in Connected Apps)
354
+
355
+ ### External Client App Configuration
356
+
357
+ ```xml
358
+ <!-- extlClntAppOauthSettings/MyServiceApp.ecaOauth-meta.xml -->
359
+ <ExtlClntAppOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
360
+ <commaSeparatedOauthScopes>Api</commaSeparatedOauthScopes>
361
+ <externalClientApplication>MyServiceApp</externalClientApplication>
362
+ <label>Service OAuth Settings</label>
363
+ </ExtlClntAppOauthSettings>
364
+ ```
365
+
366
+ **Source-control note:** if you also need to manage client-credentials security settings in source, retrieve `ExtlClntAppOauthSecuritySettings:MyServiceApp` from an org first and commit the retrieved `.ecaOauthSecurity-meta.xml` file as your starting point.
367
+
368
+ ### Implementation Pattern
369
+
370
+ ```bash
371
+ curl -X POST https://login.salesforce.com/services/oauth2/token \
372
+ -d "grant_type=client_credentials" \
373
+ -d "client_id=<CONSUMER_KEY>" \
374
+ -d "client_secret=<CONSUMER_SECRET>"
375
+ ```
376
+
377
+ ### Security Checklist
378
+ - [ ] Execution user configured
379
+ - [ ] Consumer secret rotated regularly
380
+ - [ ] Scopes minimal (least privilege)
381
+ - [ ] IP restrictions enabled
382
+
383
+ ---
384
+
385
+ ## Refresh Token Patterns
386
+
387
+ ### Standard Refresh
388
+
389
+ ```javascript
390
+ async function refreshAccessToken(refreshToken) {
391
+ const response = await axios.post('https://login.salesforce.com/services/oauth2/token',
392
+ new URLSearchParams({
393
+ grant_type: 'refresh_token',
394
+ client_id: CLIENT_ID,
395
+ client_secret: CLIENT_SECRET,
396
+ refresh_token: refreshToken
397
+ })
398
+ );
399
+
400
+ return response.data;
401
+ }
402
+ ```
403
+
404
+ ### With Token Rotation (Recommended)
405
+
406
+ When `isRefreshTokenRotationEnabled=true`, each refresh returns a NEW refresh token:
407
+
408
+ ```javascript
409
+ async function refreshWithRotation(refreshToken) {
410
+ const response = await refreshAccessToken(refreshToken);
411
+
412
+ // Store NEW refresh token (old one is now invalid)
413
+ await secureStorage.set('refresh_token', response.refresh_token);
414
+ await secureStorage.set('access_token', response.access_token);
415
+
416
+ return response;
417
+ }
418
+ ```
419
+
420
+ ### Refresh Token Policies
421
+
422
+ | Policy | Description | Use Case |
423
+ |--------|-------------|----------|
424
+ | `infinite` | Never expires | Trusted integrations |
425
+ | `immediately` | Expires on use | Maximum security |
426
+ | `zero` | Not issued | Access token only |
427
+
428
+ **Configuration**:
429
+ ```xml
430
+ <oauthPolicy>
431
+ <refreshTokenPolicy>infinite</refreshTokenPolicy>
432
+ <isRefreshTokenRotationEnabled>true</isRefreshTokenRotationEnabled>
433
+ </oauthPolicy>
434
+ ```
435
+
436
+ ---
437
+
438
+ ## Named Credentials Integration
439
+
440
+ ### Why Use Named Credentials
441
+ - Secrets managed by Salesforce (not in code)
442
+ - Automatic token refresh
443
+ - Per-user or per-org authentication
444
+ - Audit trail in Setup Audit Trail
445
+
446
+ ### Create Named Credential for JWT Flow
447
+
448
+ ```xml
449
+ <!-- namedCredentials/SalesforceAPI.namedCredential-meta.xml -->
450
+ <NamedCredential xmlns="http://soap.sforce.com/2006/04/metadata">
451
+ <label>Salesforce API</label>
452
+ <endpoint>https://yourinstance.salesforce.com</endpoint>
453
+ <protocol>NoAuthentication</protocol>
454
+ <principalType>NamedUser</principalType>
455
+ <oauthConfig>
456
+ <certificate>JWTAuthCertificate</certificate>
457
+ <consumerKey>YOUR_CONSUMER_KEY</consumerKey>
458
+ <oauthFlows>JwtBearer</oauthFlows>
459
+ <username>integration@company.com</username>
460
+ </oauthConfig>
461
+ </NamedCredential>
462
+ ```
463
+
464
+ ### Use in Apex
465
+
466
+ ```apex
467
+ HttpRequest req = new HttpRequest();
468
+ req.setEndpoint('callout:SalesforceAPI/services/data/v66.0/query?q=SELECT+Id+FROM+Account');
469
+ req.setMethod('GET');
470
+
471
+ Http http = new Http();
472
+ HttpResponse res = http.send(req);
473
+ ```
474
+
475
+ ---
476
+
477
+ ## Token Introspection
478
+
479
+ **Use**: Validate token status and metadata
480
+
481
+ ```bash
482
+ curl -X POST https://login.salesforce.com/services/oauth2/introspect \
483
+ -d "token=<ACCESS_TOKEN>" \
484
+ -d "client_id=<CONSUMER_KEY>" \
485
+ -d "client_secret=<CONSUMER_SECRET>" \
486
+ -d "token_type_hint=access_token"
487
+ ```
488
+
489
+ ---
490
+
491
+ ## Token Revocation
492
+
493
+ **Use**: Invalidate tokens on logout
494
+
495
+ ```bash
496
+ curl -X POST https://login.salesforce.com/services/oauth2/revoke \
497
+ -d "token=<TOKEN>"
498
+ ```
499
+
500
+ ---
501
+
502
+ ## Error Handling Patterns
503
+
504
+ ### OAuth Error Response Structure
505
+
506
+ ```json
507
+ {
508
+ "error": "invalid_grant",
509
+ "error_description": "authentication failure"
510
+ }
511
+ ```
512
+
513
+ ### Common Errors
514
+
515
+ | Error Code | Meaning | Resolution |
516
+ |------------|---------|------------|
517
+ | `invalid_client_id` | Consumer key invalid | Verify key from Setup |
518
+ | `invalid_client` | Secret incorrect | Check consumer secret |
519
+ | `redirect_uri_mismatch` | Callback URL mismatch | Match exactly with config |
520
+ | `invalid_grant` | Auth code expired/used | Request new authorization |
521
+ | `unsupported_grant_type` | Flow not enabled | Enable in Connected App |
522
+ | `invalid_scope` | Scope not allowed | Check available scopes |
523
+ | `access_denied` | User declined | User must approve |
524
+
525
+ ### Retry Logic Example
526
+
527
+ ```javascript
528
+ async function callSalesforceAPI(accessToken, retries = 1) {
529
+ try {
530
+ return await axios.get('https://instance.salesforce.com/services/data/v66.0/query', {
531
+ headers: { 'Authorization': `Bearer ${accessToken}` }
532
+ });
533
+ } catch (error) {
534
+ if (error.response?.status === 401 && retries > 0) {
535
+ // Token expired, refresh and retry
536
+ const newToken = await refreshAccessToken();
537
+ return callSalesforceAPI(newToken, retries - 1);
538
+ }
539
+ throw error;
540
+ }
541
+ }
542
+ ```
543
+
544
+ ---
545
+
546
+ ## Scoring Impact by Flow
547
+
548
+ | Flow | Security Score Impact | Best Practices Score |
549
+ |------|----------------------|---------------------|
550
+ | Authorization Code + PKCE | +10 (PKCE enabled) | +10 (modern flow) |
551
+ | JWT Bearer | +5 (certificate) | +15 (server-to-server best practice) |
552
+ | Device Authorization | +5 (secret optional) | +10 (appropriate for CLI) |
553
+ | Username-Password | -10 (deprecated) | -10 (anti-pattern) |
554
+
555
+ **Recommendation**: JWT Bearer or Authorization Code + PKCE score highest (90-100/120).
556
+
557
+ ---
558
+
559
+ ## Testing OAuth Flows
560
+
561
+ ### Postman Collection Variables
562
+
563
+ ```json
564
+ {
565
+ "login_url": "https://login.salesforce.com",
566
+ "client_id": "{{CONSUMER_KEY}}",
567
+ "client_secret": "{{CONSUMER_SECRET}}",
568
+ "redirect_uri": "https://localhost/oauth/callback",
569
+ "username": "test@company.com",
570
+ "password": "password123"
571
+ }
572
+ ```
573
+
574
+ ### Quick Test: JWT Bearer
575
+
576
+ ```bash
577
+ # Generate JWT (requires jq)
578
+ JWT=$(python3 -c "
579
+ import jwt, time, os
580
+ claims = {
581
+ 'iss': os.getenv('CONSUMER_KEY'),
582
+ 'sub': 'integration@company.com',
583
+ 'aud': 'https://login.salesforce.com',
584
+ 'exp': int(time.time()) + 300
585
+ }
586
+ with open('server.key') as f:
587
+ print(jwt.encode(claims, f.read(), algorithm='RS256'))
588
+ ")
589
+
590
+ # Get token
591
+ curl -X POST https://login.salesforce.com/services/oauth2/token \
592
+ -d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" \
593
+ -d "assertion=$JWT" | jq
594
+ ```
595
+
596
+ ---
597
+
598
+ ## Migration Strategies
599
+
600
+ ### Connected App → External Client App
601
+
602
+ **Step 1**: Create equivalent ECA
603
+ ```bash
604
+ # Read existing Connected App
605
+ Grep: pattern="<oauthConfig>" path="force-app/main/default/connectedApps/"
606
+
607
+ # Create new ECA with same scopes
608
+ # Use templates: external-client-app.xml, eca-global-oauth.xml
609
+ ```
610
+
611
+ **Step 2**: Parallel operation
612
+ - Deploy ECA alongside Connected App
613
+ - Update one integration at a time
614
+ - Monitor both apps
615
+
616
+ **Step 3**: Cutover
617
+ - Update all integrations to use new Consumer Key
618
+ - Disable old Connected App
619
+ - Archive after 30 days
620
+
621
+ **Scoring benefit**: ECA typically scores 15-20 points higher due to modern security model.
622
+
623
+ ---
624
+
625
+ ## Quick Reference
626
+
627
+ ### Template Selection by Flow
628
+
629
+ | Flow | Template File |
630
+ |------|---------------|
631
+ | Authorization Code (basic) | `connected-app-oauth.xml` |
632
+ | JWT Bearer | `connected-app-jwt.xml` |
633
+ | Mobile/SPA (PKCE) | `external-client-app.xml` + `eca-global-oauth.xml` |
634
+ | Device Authorization | `connected-app-basic.xml` (secret optional) |
635
+ | Client Credentials | `eca-oauth-settings.xml` + optional retrieve-first `ecaOauthSecurity` metadata (ECA only) |
636
+
637
+ ### Salesforce OAuth Endpoints
638
+
639
+ | Environment | Base URL |
640
+ |-------------|----------|
641
+ | Production | `https://login.salesforce.com` |
642
+ | Sandbox | `https://test.salesforce.com` |
643
+ | Custom Domain | `https://yourdomain.my.salesforce.com` |
644
+
645
+ ### Key Endpoints
646
+ - Authorize: `/services/oauth2/authorize`
647
+ - Token: `/services/oauth2/token`
648
+ - Revoke: `/services/oauth2/revoke`
649
+ - Introspect: `/services/oauth2/introspect`
650
+ - Device Code: `/services/oauth2/device/code`
651
+ - UserInfo (OpenID): `/services/oauth2/userinfo`
652
+
653
+ ---
654
+
655
+ ## Related Resources
656
+
657
+ - **Flow Diagrams**: Included above (Authorization Code, JWT Bearer, Device Authorization)
658
+ - **Security Checklist**: [references/security-checklist.md](../references/security-checklist.md)
659
+ - **Migration Guide**: [references/migration-guide.md](../references/migration-guide.md)
660
+ - **Main Skill**: [SKILL.md](../SKILL.md)