@salesforce/afv-skills 1.7.5 → 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 (513) 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/building-ui-bundle-frontend/SKILL.md +2 -0
  111. package/skills/configuring-connected-apps/CREDITS.md +3 -0
  112. package/skills/configuring-connected-apps/README.md +99 -0
  113. package/skills/configuring-connected-apps/SKILL.md +224 -0
  114. package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
  115. package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
  116. package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
  117. package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
  118. package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
  119. package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
  120. package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
  121. package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
  122. package/skills/configuring-connected-apps/references/example-usage.md +256 -0
  123. package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
  124. package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
  125. package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
  126. package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
  127. package/skills/connecting-datacloud/CREDITS.md +5 -0
  128. package/skills/connecting-datacloud/README.md +59 -0
  129. package/skills/connecting-datacloud/SKILL.md +155 -0
  130. package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
  131. package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
  132. package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
  133. package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
  134. package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
  135. package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
  136. package/skills/debugging-apex-logs/CREDITS.md +22 -0
  137. package/skills/debugging-apex-logs/README.md +74 -0
  138. package/skills/debugging-apex-logs/SKILL.md +172 -0
  139. package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
  140. package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
  141. package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
  142. package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
  143. package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
  144. package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
  145. package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
  146. package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
  147. package/skills/debugging-apex-logs/references/common-issues.md +68 -0
  148. package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
  149. package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
  150. package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
  151. package/skills/deploying-metadata/CREDITS.md +25 -0
  152. package/skills/deploying-metadata/README.md +104 -0
  153. package/skills/deploying-metadata/SKILL.md +214 -0
  154. package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
  155. package/skills/deploying-metadata/assets/package.xml +121 -0
  156. package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
  157. package/skills/deploying-metadata/references/deploy.sh +73 -0
  158. package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
  159. package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
  160. package/skills/deploying-metadata/references/orchestration.md +183 -0
  161. package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
  162. package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
  163. package/skills/deploying-omnistudio-datapacks/README.md +88 -0
  164. package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
  165. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
  166. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
  167. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
  168. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
  169. package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
  170. package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
  171. package/skills/deploying-ui-bundle/SKILL.md +2 -0
  172. package/skills/developing-agentforce/SKILL.md +1 -1
  173. package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
  174. package/skills/developing-agentforce/references/actions-reference.md +8 -8
  175. package/skills/fetching-salesforce-docs/README.md +66 -0
  176. package/skills/fetching-salesforce-docs/SKILL.md +209 -0
  177. package/skills/fetching-salesforce-docs/requirements.txt +2 -0
  178. package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
  179. package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
  180. package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
  181. package/skills/generating-apex/CREDITS.md +1 -26
  182. package/skills/generating-apex/SKILL.md +4 -2
  183. package/skills/generating-apex-test/CREDITS.md +2 -27
  184. package/skills/generating-apex-test/SKILL.md +3 -1
  185. package/skills/generating-custom-application/SKILL.md +2 -0
  186. package/skills/generating-custom-field/SKILL.md +3 -1
  187. package/skills/generating-custom-lightning-type/SKILL.md +2 -0
  188. package/skills/generating-custom-object/SKILL.md +3 -1
  189. package/skills/generating-custom-tab/SKILL.md +3 -1
  190. package/skills/generating-flexipage/SKILL.md +2 -0
  191. package/skills/generating-flow/SKILL.md +2 -0
  192. package/skills/generating-lightning-app/SKILL.md +1 -1
  193. package/skills/generating-list-view/SKILL.md +2 -0
  194. package/skills/generating-lwc-components/CREDITS.md +5 -0
  195. package/skills/generating-lwc-components/README.md +126 -0
  196. package/skills/generating-lwc-components/SKILL.md +191 -0
  197. package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
  198. package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
  199. package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
  200. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
  201. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
  202. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
  203. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
  204. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
  205. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
  206. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
  207. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
  208. package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
  209. package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
  210. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
  211. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
  212. package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
  213. package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
  214. package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
  215. package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
  216. package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
  217. package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
  218. package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
  219. package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
  220. package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
  221. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
  222. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
  223. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
  224. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
  225. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
  226. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
  227. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
  228. package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
  229. package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
  230. package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
  231. package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
  232. package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
  233. package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
  234. package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
  235. package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
  236. package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
  237. package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
  238. package/skills/generating-lwc-components/references/advanced-features.md +108 -0
  239. package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
  240. package/skills/generating-lwc-components/references/cli-commands.md +545 -0
  241. package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
  242. package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
  243. package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
  244. package/skills/generating-lwc-components/references/lms-guide.md +860 -0
  245. package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
  246. package/skills/generating-lwc-components/references/performance-guide.md +861 -0
  247. package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
  248. package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
  249. package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
  250. package/skills/generating-lwc-components/references/state-management.md +642 -0
  251. package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
  252. package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
  253. package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
  254. package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
  255. package/skills/generating-mermaid-diagrams/README.md +114 -0
  256. package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
  257. package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
  258. package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
  259. package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
  260. package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
  261. package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
  262. package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
  263. package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
  264. package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
  265. package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
  266. package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
  267. package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
  268. package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
  269. package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
  270. package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
  271. package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
  272. package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
  273. package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
  274. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
  275. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
  276. package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
  277. package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
  278. package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
  279. package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
  280. package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
  281. package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
  282. package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
  283. package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
  284. package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
  285. package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
  286. package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
  287. package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
  288. package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
  289. package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
  290. package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
  291. package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
  292. package/skills/generating-ui-bundle-features/SKILL.md +2 -0
  293. package/skills/generating-ui-bundle-metadata/SKILL.md +2 -0
  294. package/skills/generating-ui-bundle-site/SKILL.md +2 -0
  295. package/skills/generating-validation-rule/SKILL.md +2 -0
  296. package/skills/generating-visual-diagrams/CREDITS.md +80 -0
  297. package/skills/generating-visual-diagrams/README.md +83 -0
  298. package/skills/generating-visual-diagrams/SKILL.md +208 -0
  299. package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
  300. package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
  301. package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
  302. package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
  303. package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
  304. package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
  305. package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
  306. package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
  307. package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
  308. package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
  309. package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
  310. package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
  311. package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
  312. package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
  313. package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
  314. package/skills/handling-sf-data/CREDITS.md +5 -0
  315. package/skills/handling-sf-data/README.md +112 -0
  316. package/skills/handling-sf-data/SKILL.md +235 -0
  317. package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
  318. package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
  319. package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
  320. package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
  321. package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
  322. package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
  323. package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
  324. package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
  325. package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
  326. package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
  327. package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
  328. package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
  329. package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
  330. package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
  331. package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
  332. package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
  333. package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
  334. package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
  335. package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
  336. package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
  337. package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
  338. package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
  339. package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
  340. package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
  341. package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
  342. package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
  343. package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
  344. package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
  345. package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
  346. package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
  347. package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
  348. package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
  349. package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
  350. package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
  351. package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
  352. package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
  353. package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
  354. package/skills/handling-sf-data/references/orchestration.md +174 -0
  355. package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
  356. package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
  357. package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
  358. package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
  359. package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
  360. package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
  361. package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
  362. package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
  363. package/skills/harmonizing-datacloud/CREDITS.md +3 -0
  364. package/skills/harmonizing-datacloud/README.md +31 -0
  365. package/skills/harmonizing-datacloud/SKILL.md +117 -0
  366. package/skills/implementing-ui-bundle-agentforce-conversation-client/SKILL.md +1 -1
  367. package/skills/implementing-ui-bundle-file-upload/SKILL.md +2 -0
  368. package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
  369. package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
  370. package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
  371. package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
  372. package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
  373. package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
  374. package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
  375. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
  376. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
  377. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
  378. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
  379. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
  380. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
  381. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
  382. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
  383. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
  384. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
  385. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
  386. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
  387. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
  388. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
  389. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
  390. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
  391. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
  392. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
  393. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
  394. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
  395. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
  396. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
  397. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
  398. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
  399. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
  400. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
  401. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
  402. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
  403. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
  404. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
  405. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
  406. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
  407. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
  408. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
  409. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
  410. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
  411. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
  412. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
  413. package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
  414. package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
  415. package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
  416. package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
  417. package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
  418. package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
  419. package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
  420. package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
  421. package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
  422. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
  423. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
  424. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
  425. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
  426. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
  427. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
  428. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
  429. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
  430. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
  431. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
  432. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
  433. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
  434. package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
  435. package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
  436. package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
  437. package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
  438. package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
  439. package/skills/observing-agentforce/SKILL.md +1 -1
  440. package/skills/orchestrating-datacloud/CREDITS.md +15 -0
  441. package/skills/orchestrating-datacloud/README.md +129 -0
  442. package/skills/orchestrating-datacloud/SKILL.md +236 -0
  443. package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
  444. package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
  445. package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
  446. package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
  447. package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
  448. package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
  449. package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
  450. package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
  451. package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
  452. package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
  453. package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
  454. package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
  455. package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
  456. package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
  457. package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
  458. package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
  459. package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
  460. package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
  461. package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
  462. package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
  463. package/skills/preparing-datacloud/CREDITS.md +7 -0
  464. package/skills/preparing-datacloud/README.md +51 -0
  465. package/skills/preparing-datacloud/SKILL.md +191 -0
  466. package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
  467. package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
  468. package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
  469. package/skills/querying-soql/CREDITS.md +21 -0
  470. package/skills/querying-soql/README.md +41 -0
  471. package/skills/querying-soql/SKILL.md +143 -0
  472. package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
  473. package/skills/querying-soql/assets/basic-queries.soql +188 -0
  474. package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
  475. package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
  476. package/skills/querying-soql/assets/relationship-queries.soql +203 -0
  477. package/skills/querying-soql/assets/selector-class.cls +219 -0
  478. package/skills/querying-soql/references/anti-patterns.md +348 -0
  479. package/skills/querying-soql/references/cli-commands.md +358 -0
  480. package/skills/querying-soql/references/field-coverage-rules.md +514 -0
  481. package/skills/querying-soql/references/query-optimization.md +142 -0
  482. package/skills/querying-soql/references/selector-patterns.md +479 -0
  483. package/skills/querying-soql/references/soql-reference.md +227 -0
  484. package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
  485. package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
  486. package/skills/retrieving-datacloud/CREDITS.md +7 -0
  487. package/skills/retrieving-datacloud/README.md +44 -0
  488. package/skills/retrieving-datacloud/SKILL.md +120 -0
  489. package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
  490. package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
  491. package/skills/running-apex-tests/CREDITS.md +22 -0
  492. package/skills/running-apex-tests/README.md +94 -0
  493. package/skills/running-apex-tests/SKILL.md +158 -0
  494. package/skills/running-apex-tests/assets/basic-test.cls +169 -0
  495. package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
  496. package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
  497. package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
  498. package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
  499. package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
  500. package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
  501. package/skills/running-apex-tests/references/cli-commands.md +289 -0
  502. package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
  503. package/skills/running-apex-tests/references/performance-optimization.md +283 -0
  504. package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
  505. package/skills/running-apex-tests/references/test-patterns.md +154 -0
  506. package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
  507. package/skills/segmenting-datacloud/CREDITS.md +3 -0
  508. package/skills/segmenting-datacloud/README.md +36 -0
  509. package/skills/segmenting-datacloud/SKILL.md +115 -0
  510. package/skills/switching-org/SKILL.md +1 -1
  511. package/skills/testing-agentforce/SKILL.md +1 -1
  512. package/skills/uplifting-components-to-slds2/SKILL.md +3 -1
  513. package/skills/using-ui-bundle-salesforce-data/SKILL.md +2 -0
@@ -0,0 +1,387 @@
1
+ # Integration Sequence Diagram Template
2
+
3
+ Sequence diagram template for visualizing Salesforce integration patterns with external systems.
4
+
5
+ ## When to Use
6
+ - Documenting API integrations
7
+ - Planning data sync flows
8
+ - Designing event-driven architectures
9
+ - Explaining callout patterns
10
+
11
+ ## Mermaid Template - Outbound REST Callout
12
+
13
+ ```mermaid
14
+ %%{init: {'theme': 'base', 'themeVariables': {
15
+ 'actorBkg': '#ddd6fe',
16
+ 'actorTextColor': '#1f2937',
17
+ 'actorBorder': '#6d28d9',
18
+ 'signalColor': '#334155',
19
+ 'signalTextColor': '#1f2937',
20
+ 'noteBkgColor': '#f8fafc',
21
+ 'noteTextColor': '#1f2937',
22
+ 'noteBorderColor': '#334155'
23
+ }}}%%
24
+ sequenceDiagram
25
+ autonumber
26
+
27
+ box rgba(167,243,208,0.3) SALESFORCE
28
+ participant T as 🔄 Trigger/<br/>Flow
29
+ participant Q as ⚡ Queueable
30
+ participant NC as 🔐 Named<br/>Credential
31
+ end
32
+
33
+ box rgba(254,215,170,0.3) EXTERNAL SYSTEM
34
+ participant API as 🏭 External<br/>API
35
+ end
36
+
37
+ Note over T,API: Outbound REST Integration (Async)
38
+
39
+ T->>T: 1. Record Created/Updated
40
+ Note over T: Account After Insert/Update
41
+
42
+ T->>Q: 2. Enqueue Async Job
43
+ Note over T,Q: System.enqueueJob(<br/> new AccountSyncQueueable(recordIds)<br/>)
44
+
45
+ activate Q
46
+
47
+ Q->>Q: 3. Query Records
48
+ Note over Q: [SELECT Id, Name, ...<br/> FROM Account<br/> WHERE Id IN :recordIds]
49
+
50
+ Q->>Q: 4. Build Request Payload
51
+ Note over Q: JSON.serialize(accounts)
52
+
53
+ Q->>NC: 5. Get Auth Token
54
+ Note over Q,NC: Named Credential handles:<br/>• OAuth token refresh<br/>• Certificate auth<br/>• Basic auth
55
+
56
+ NC->>Q: 6. Return Auth Headers
57
+
58
+ Q->>API: 7. POST /api/v1/accounts
59
+ Note over Q,API: Headers:<br/> Authorization: Bearer ...<br/> Content-Type: application/json<br/><br/>Body: [{"name": "Acme", ...}]
60
+
61
+ alt Success (2xx)
62
+ API->>Q: 8a. 200 OK
63
+ Note over API,Q: {"status": "created",<br/> "externalId": "EXT-123"}
64
+
65
+ Q->>Q: 9a. Update SF Records
66
+ Note over Q: Account.External_Id__c = "EXT-123"<br/>Account.Sync_Status__c = "Synced"
67
+ else Client Error (4xx)
68
+ API->>Q: 8b. 400 Bad Request
69
+ Note over API,Q: {"error": "validation_failed",<br/> "details": [...]}
70
+
71
+ Q->>Q: 9b. Log Error
72
+ Note over Q: Create Integration_Log__c<br/>Status = "Failed"
73
+ else Server Error (5xx)
74
+ API->>Q: 8c. 500 Internal Error
75
+
76
+ Q->>Q: 9c. Retry Logic
77
+ Note over Q: if (retryCount < 3)<br/> System.enqueueJob(this)
78
+ end
79
+
80
+ deactivate Q
81
+ ```
82
+
83
+ ## Mermaid Template - Inbound REST API
84
+
85
+ ```mermaid
86
+ %%{init: {'theme': 'base', 'themeVariables': {
87
+ 'actorBkg': '#ddd6fe',
88
+ 'actorTextColor': '#1f2937',
89
+ 'actorBorder': '#6d28d9',
90
+ 'signalColor': '#334155',
91
+ 'signalTextColor': '#1f2937',
92
+ 'noteBkgColor': '#f8fafc',
93
+ 'noteTextColor': '#1f2937',
94
+ 'noteBorderColor': '#334155'
95
+ }}}%%
96
+ sequenceDiagram
97
+ autonumber
98
+
99
+ box rgba(254,215,170,0.3) EXTERNAL SYSTEM
100
+ participant EXT as 🏭 External<br/>System
101
+ end
102
+
103
+ box rgba(167,243,208,0.3) SALESFORCE
104
+ participant GW as 🌐 API Gateway<br/>(REST Resource)
105
+ participant SVC as ⚙️ Service<br/>Class
106
+ participant DB as 💾 Database
107
+ end
108
+
109
+ Note over EXT,DB: Inbound REST Integration
110
+
111
+ EXT->>EXT: 1. Prepare Request
112
+ Note over EXT: Build payload with<br/>account data
113
+
114
+ EXT->>GW: 2. POST /services/apexrest/accounts
115
+ Note over EXT,GW: Headers:<br/> Authorization: Bearer ACCESS_TOKEN<br/> Content-Type: application/json
116
+
117
+ activate GW
118
+
119
+ GW->>GW: 3. Authenticate Request
120
+ Note over GW: Validate OAuth token<br/>Check user permissions
121
+
122
+ GW->>GW: 4. Parse Request Body
123
+ Note over GW: RestRequest req = RestContext.request<br/>String body = req.requestBody.toString()
124
+
125
+ GW->>SVC: 5. Call Service Method
126
+ Note over GW,SVC: AccountService.upsertAccounts(<br/> parsedAccounts<br/>)
127
+
128
+ activate SVC
129
+
130
+ SVC->>SVC: 6. Validate Data
131
+ Note over SVC: Check required fields<br/>Validate external IDs
132
+
133
+ SVC->>DB: 7. Upsert Records
134
+ Note over SVC,DB: Database.upsert(<br/> accounts,<br/> Account.External_Id__c,<br/> false // allOrNone<br/>)
135
+
136
+ DB->>SVC: 8. Return Results
137
+
138
+ SVC->>SVC: 9. Process Results
139
+ Note over SVC: Map success/errors<br/>to response format
140
+
141
+ deactivate SVC
142
+
143
+ SVC->>GW: 10. Return Response Object
144
+
145
+ GW->>GW: 11. Build REST Response
146
+ Note over GW: RestContext.response.statusCode = 200<br/>RestContext.response.responseBody = JSON
147
+
148
+ deactivate GW
149
+
150
+ GW->>EXT: 12. 200 OK
151
+ Note over GW,EXT: {<br/> "success": true,<br/> "records": [<br/> {"id": "001xxx", "status": "created"},<br/> {"id": "001yyy", "status": "updated"}<br/> ]<br/>}
152
+ ```
153
+
154
+ ## Mermaid Template - Platform Event (Async)
155
+
156
+ ```mermaid
157
+ %%{init: {'theme': 'base', 'themeVariables': {
158
+ 'actorBkg': '#ddd6fe',
159
+ 'actorTextColor': '#1f2937',
160
+ 'actorBorder': '#6d28d9',
161
+ 'signalColor': '#334155',
162
+ 'signalTextColor': '#1f2937',
163
+ 'noteBkgColor': '#f8fafc',
164
+ 'noteTextColor': '#1f2937',
165
+ 'noteBorderColor': '#334155'
166
+ }}}%%
167
+ sequenceDiagram
168
+ autonumber
169
+
170
+ box rgba(167,243,208,0.3) SALESFORCE ORG A
171
+ participant T as 🔄 Trigger
172
+ participant PE as 📢 Platform<br/>Event
173
+ end
174
+
175
+ box rgba(165,243,252,0.3) EVENT BUS
176
+ participant EB as 🚌 Salesforce<br/>Event Bus
177
+ end
178
+
179
+ box rgba(254,215,170,0.3) EXTERNAL SYSTEM
180
+ participant CL as 🔌 CometD<br/>Client
181
+ participant API as 🏭 Backend<br/>Service
182
+ end
183
+
184
+ Note over T,API: Event-Driven Integration
185
+
186
+ T->>T: 1. Record Change Detected
187
+ Note over T: Account updated with<br/>Type = 'Customer'
188
+
189
+ T->>PE: 2. Publish Platform Event
190
+ Note over T,PE: EventBus.publish(<br/> new Account_Change__e(<br/> Account_Id__c = acc.Id,<br/> Change_Type__c = 'UPDATE'<br/> )<br/>)
191
+
192
+ PE->>EB: 3. Event Published
193
+ Note over PE,EB: Event persisted to<br/>event bus (24hr retention)
194
+
195
+ EB->>EB: 4. Event Queued
196
+
197
+ EB-)CL: 5. Push to Subscribers
198
+ Note over EB,CL: CometD streaming<br/>/event/Account_Change__e
199
+
200
+ activate CL
201
+
202
+ CL->>CL: 6. Receive Event
203
+ Note over CL: {<br/> "Account_Id__c": "001xxx",<br/> "Change_Type__c": "UPDATE",<br/> "ReplayId": 12345<br/>}
204
+
205
+ CL->>API: 7. Process Event
206
+ Note over CL,API: Call internal service<br/>to sync data
207
+
208
+ API->>API: 8. Update External DB
209
+
210
+ API->>CL: 9. Acknowledge
211
+ Note over API,CL: Store ReplayId for<br/>resume capability
212
+
213
+ deactivate CL
214
+
215
+ Note over CL: ⚠️ Store last ReplayId<br/>for reconnection
216
+ ```
217
+
218
+ ## ASCII Fallback Template - Outbound Integration
219
+
220
+ ```
221
+ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
222
+ │ Trigger │ │ Queueable │ │ Named │ │ External │
223
+ │ │ │ │ │ Credential │ │ API │
224
+ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
225
+ │ │ │ │
226
+ │ 1. Record │ │ │
227
+ │ Changed │ │ │
228
+ │ │ │ │
229
+ │ 2. Enqueue Job │ │ │
230
+ │─────────────────>│ │ │
231
+ │ │ │ │
232
+ │ │ 3. Query │ │
233
+ │ │ Records │ │
234
+ │ │ │ │
235
+ │ │ 4. Get Auth │ │
236
+ │ │─────────────────>│ │
237
+ │ │ │ │
238
+ │ │ 5. Auth Token │ │
239
+ │ │<─────────────────│ │
240
+ │ │ │ │
241
+ │ │ 6. POST /api/accounts │
242
+ │ │─────────────────────────────────────>│
243
+ │ │ │ │
244
+ │ │ 7. Response (200/4xx/5xx) │
245
+ │ │<─────────────────────────────────────│
246
+ │ │ │ │
247
+ │ │ 8. Update │ │
248
+ │ │ Records │ │
249
+ │ │ (or retry) │ │
250
+ ```
251
+
252
+ ## Common Integration Patterns
253
+
254
+ ### 1. Request-Response (Sync)
255
+ ```mermaid
256
+ %%{init: {'theme': 'base', 'themeVariables': {
257
+ 'actorBkg': '#ddd6fe',
258
+ 'actorTextColor': '#1f2937',
259
+ 'actorBorder': '#6d28d9',
260
+ 'signalColor': '#334155'
261
+ }}}%%
262
+ sequenceDiagram
263
+ participant SF as Salesforce
264
+ participant EXT as External API
265
+ SF->>EXT: Request
266
+ EXT->>SF: Response
267
+ ```
268
+
269
+ ### 2. Fire-and-Forget (Async)
270
+ ```mermaid
271
+ %%{init: {'theme': 'base', 'themeVariables': {
272
+ 'actorBkg': '#ddd6fe',
273
+ 'actorTextColor': '#1f2937',
274
+ 'actorBorder': '#6d28d9',
275
+ 'signalColor': '#334155'
276
+ }}}%%
277
+ sequenceDiagram
278
+ participant SF as Salesforce
279
+ participant Q as Queue
280
+ participant EXT as External API
281
+ SF-)Q: Enqueue
282
+ Q-)EXT: Process (later)
283
+ ```
284
+
285
+ ### 3. Pub/Sub (Event-Driven)
286
+ ```mermaid
287
+ %%{init: {'theme': 'base', 'themeVariables': {
288
+ 'actorBkg': '#ddd6fe',
289
+ 'actorTextColor': '#1f2937',
290
+ 'actorBorder': '#6d28d9',
291
+ 'signalColor': '#334155'
292
+ }}}%%
293
+ sequenceDiagram
294
+ participant PUB as Publisher
295
+ participant BUS as Event Bus
296
+ participant SUB as Subscriber
297
+ PUB-)BUS: Publish Event
298
+ BUS-)SUB: Deliver Event
299
+ ```
300
+
301
+ ### 4. Batch Sync
302
+ ```mermaid
303
+ %%{init: {'theme': 'base', 'themeVariables': {
304
+ 'actorBkg': '#ddd6fe',
305
+ 'actorTextColor': '#1f2937',
306
+ 'actorBorder': '#6d28d9',
307
+ 'signalColor': '#334155'
308
+ }}}%%
309
+ sequenceDiagram
310
+ participant SCH as Scheduler
311
+ participant BAT as Batch Job
312
+ participant EXT as External API
313
+ SCH->>BAT: Start (daily)
314
+ loop Each Batch
315
+ BAT->>EXT: Sync Records
316
+ end
317
+ ```
318
+
319
+ ## HTTP Method Reference
320
+
321
+ | Method | Purpose | Salesforce Use |
322
+ |--------|---------|----------------|
323
+ | GET | Retrieve data | Query external API |
324
+ | POST | Create resource | Send new records |
325
+ | PUT | Replace resource | Full record update |
326
+ | PATCH | Partial update | Update specific fields |
327
+ | DELETE | Remove resource | Delete external record |
328
+
329
+ ## Error Handling Patterns
330
+
331
+ ```mermaid
332
+ %%{init: {'theme': 'base', 'themeVariables': {
333
+ 'actorBkg': '#ddd6fe',
334
+ 'actorTextColor': '#1f2937',
335
+ 'actorBorder': '#6d28d9',
336
+ 'signalColor': '#334155',
337
+ 'signalTextColor': '#1f2937',
338
+ 'noteBkgColor': '#f8fafc',
339
+ 'noteTextColor': '#1f2937'
340
+ }}}%%
341
+ sequenceDiagram
342
+ participant SF as Salesforce
343
+ participant API as External API
344
+
345
+ SF->>API: Request
346
+
347
+ alt Success
348
+ API->>SF: 200 OK
349
+ SF->>SF: Process Response
350
+ else Retry-able Error
351
+ API->>SF: 503 Service Unavailable
352
+ SF->>SF: Wait (exponential backoff)
353
+ SF->>API: Retry Request
354
+ else Fatal Error
355
+ API->>SF: 400 Bad Request
356
+ SF->>SF: Log Error
357
+ SF->>SF: Create Case/Task
358
+ end
359
+ ```
360
+
361
+ ## Salesforce Integration Components
362
+
363
+ | Component | Purpose | When to Use |
364
+ |-----------|---------|-------------|
365
+ | Named Credential | Auth management | OAuth, Certificate, Basic Auth |
366
+ | External Service | Auto-generate Apex | OpenAPI/Swagger specs |
367
+ | Platform Event | Async messaging | Event-driven integration |
368
+ | Change Data Capture | Track changes | Real-time replication |
369
+ | Outbound Message | Declarative callout | Simple workflow integrations |
370
+ | Apex REST | Inbound API | Custom REST endpoints |
371
+ | SOAP API | Inbound SOAP | Legacy systems |
372
+
373
+ ## Best Practices
374
+
375
+ 1. **Always use async** for callouts in triggers
376
+ 2. **Use Named Credentials** for auth management
377
+ 3. **Implement retry logic** with exponential backoff
378
+ 4. **Log all integrations** for troubleshooting
379
+ 5. **Handle partial success** in bulk operations
380
+ 6. **Set appropriate timeouts** (max 120s for callouts)
381
+
382
+ ## Customization Points
383
+
384
+ - Replace system names with actual integration partners
385
+ - Add specific endpoints and payload structures
386
+ - Include actual field mappings
387
+ - Show specific error codes and handling
@@ -0,0 +1,197 @@
1
+ # Authorization Code + PKCE Flow Template
2
+
3
+ OAuth 2.0 Authorization Code flow with Proof Key for Code Exchange (PKCE) for public clients.
4
+
5
+ ## When to Use
6
+ - Single Page Applications (SPAs)
7
+ - Mobile native applications
8
+ - Desktop applications
9
+ - Any client that cannot securely store a client_secret
10
+
11
+ ## Mermaid Template
12
+
13
+ ```mermaid
14
+ %%{init: {'theme': 'base', 'themeVariables': {
15
+ 'actorBkg': '#ddd6fe',
16
+ 'actorTextColor': '#1f2937',
17
+ 'actorBorder': '#6d28d9',
18
+ 'signalColor': '#334155',
19
+ 'signalTextColor': '#1f2937',
20
+ 'noteBkgColor': '#f8fafc',
21
+ 'noteTextColor': '#1f2937',
22
+ 'noteBorderColor': '#334155'
23
+ }}}%%
24
+ sequenceDiagram
25
+ autonumber
26
+
27
+ box rgba(165,243,252,0.3) USER DEVICE
28
+ participant U as 👤 User
29
+ participant App as 📱 Mobile App<br/>or SPA
30
+ end
31
+
32
+ box rgba(167,243,208,0.3) SALESFORCE
33
+ participant SF as ☁️ Salesforce<br/>Authorization Server
34
+ end
35
+
36
+ Note over U,SF: Authorization Code + PKCE Flow (RFC 7636)
37
+
38
+ U->>App: 1. Tap "Login with Salesforce"
39
+
40
+ App->>App: 2. Generate PKCE Parameters
41
+ Note over App: code_verifier = random(128 bytes)<br/>code_challenge = BASE64URL(SHA256(code_verifier))
42
+
43
+ App->>App: 3. Generate state (CSRF protection)
44
+
45
+ App->>SF: 4. Open browser/webview to /authorize
46
+ Note over App,SF: response_type=code<br/>client_id=CONSUMER_KEY<br/>redirect_uri=CALLBACK_URL<br/>scope=api refresh_token<br/>state=RANDOM_STATE<br/>code_challenge=CODE_CHALLENGE<br/>code_challenge_method=S256
47
+
48
+ SF->>U: 5. Display Login Page
49
+ U->>SF: 6. Enter Username & Password
50
+
51
+ SF->>SF: 7. Authenticate User
52
+
53
+ SF->>U: 8. Display Consent Screen
54
+ Note over SF,U: "App requests access to:<br/>• API Access<br/>• Refresh Token"
55
+
56
+ U->>SF: 9. Grant Consent (Allow)
57
+
58
+ SF->>SF: 10. Generate Authorization Code
59
+ Note over SF: Store code_challenge with code
60
+
61
+ SF->>App: 11. Redirect to callback with code
62
+ Note over SF,App: scheme://callback?code=AUTH_CODE<br/>&state=RANDOM_STATE
63
+
64
+ App->>App: 12. Verify state matches
65
+
66
+ App->>SF: 13. POST /services/oauth2/token
67
+ Note over App,SF: grant_type=authorization_code<br/>code=AUTH_CODE<br/>client_id=CONSUMER_KEY<br/>redirect_uri=CALLBACK_URL<br/>code_verifier=CODE_VERIFIER
68
+
69
+ SF->>SF: 14. Validate Code & PKCE
70
+ Note over SF: Verify: BASE64URL(SHA256(code_verifier))<br/>== stored code_challenge
71
+
72
+ SF->>App: 15. Return Tokens
73
+ Note over SF,App: {<br/> access_token: "...",<br/> refresh_token: "...",<br/> instance_url: "https://...",<br/> token_type: "Bearer"<br/>}
74
+
75
+ App->>App: 16. Store tokens securely
76
+ Note over App: Use Keychain (iOS)<br/>or Keystore (Android)
77
+
78
+ App->>U: 17. ✅ Successfully Logged In
79
+ ```
80
+
81
+ ## ASCII Fallback Template
82
+
83
+ ```
84
+ ┌──────────┐ ┌───────────────┐ ┌────────────────────┐
85
+ │ User │ │ Mobile App │ │ Salesforce │
86
+ │ │ │ or SPA │ │ (Auth Server) │
87
+ └────┬─────┘ └───────┬───────┘ └─────────┬──────────┘
88
+ │ │ │
89
+ │ 1. Tap Login │ │
90
+ │──────────────────>│ │
91
+ │ │ │
92
+ │ │ 2. Generate PKCE: │
93
+ │ │ code_verifier │
94
+ │ │ code_challenge │
95
+ │ │ │
96
+ │ 3. Open Browser/WebView to /authorize │
97
+ │<──────────────────│ │
98
+ │ │ │
99
+ │ 4. GET /authorize │
100
+ │ (client_id, code_challenge, state) │
101
+ │───────────────────────────────────────────────────────>│
102
+ │ │ │
103
+ │ 5. Login Page │
104
+ │<───────────────────────────────────────────────────────│
105
+ │ │ │
106
+ │ 6. Enter Credentials │
107
+ │───────────────────────────────────────────────────────>│
108
+ │ │ │
109
+ │ 7. Consent Screen │
110
+ │<───────────────────────────────────────────────────────│
111
+ │ │ │
112
+ │ 8. Grant Consent │
113
+ │───────────────────────────────────────────────────────>│
114
+ │ │ │
115
+ │ 9. Redirect with ?code=ABC123 │
116
+ │<───────────────────────────────────────────────────────│
117
+ │ │ │
118
+ │ 10. Deliver Code │ │
119
+ │──────────────────>│ │
120
+ │ │ │
121
+ │ │ 11. POST /token │
122
+ │ │ (code_verifier) │
123
+ │ │──────────────────────>│
124
+ │ │ │
125
+ │ │ 12. Verify PKCE: │
126
+ │ │ SHA256(verifier) │
127
+ │ │ == challenge │
128
+ │ │ │
129
+ │ │ 13. Access Token + │
130
+ │ │ Refresh Token │
131
+ │ │<──────────────────────│
132
+ │ │ │
133
+ │ 14. Logged In ✅ │ │
134
+ │<──────────────────│ │
135
+ ```
136
+
137
+ ## PKCE Parameter Generation
138
+
139
+ ### JavaScript/TypeScript
140
+ ```javascript
141
+ // Generate code_verifier (43-128 characters)
142
+ const codeVerifier = base64URLEncode(crypto.getRandomValues(new Uint8Array(32)));
143
+
144
+ // Generate code_challenge
145
+ const encoder = new TextEncoder();
146
+ const data = encoder.encode(codeVerifier);
147
+ const digest = await crypto.subtle.digest('SHA-256', data);
148
+ const codeChallenge = base64URLEncode(new Uint8Array(digest));
149
+
150
+ function base64URLEncode(buffer) {
151
+ return btoa(String.fromCharCode(...buffer))
152
+ .replace(/\+/g, '-')
153
+ .replace(/\//g, '_')
154
+ .replace(/=+$/, '');
155
+ }
156
+ ```
157
+
158
+ ### Python
159
+ ```python
160
+ import hashlib
161
+ import base64
162
+ import secrets
163
+
164
+ # Generate code_verifier
165
+ code_verifier = base64.urlsafe_b64encode(secrets.token_bytes(32)).rstrip(b'=').decode()
166
+
167
+ # Generate code_challenge
168
+ code_challenge = base64.urlsafe_b64encode(
169
+ hashlib.sha256(code_verifier.encode()).digest()
170
+ ).rstrip(b'=').decode()
171
+ ```
172
+
173
+ ## Key Differences from Standard Auth Code
174
+
175
+ | Aspect | Standard | PKCE |
176
+ |--------|----------|------|
177
+ | Client Secret | Required | Not required |
178
+ | code_challenge | Not used | Required in /authorize |
179
+ | code_verifier | Not used | Required in /token |
180
+ | Security | Secret-based | Cryptographic proof |
181
+ | Client Type | Confidential | Public |
182
+
183
+ ## Security Considerations
184
+
185
+ 1. **Generate new PKCE values** for each authorization request
186
+ 2. **Use S256 method** (SHA-256), never "plain"
187
+ 3. **Store code_verifier securely** until token exchange
188
+ 4. **Use secure storage** for tokens (Keychain/Keystore)
189
+ 5. **Implement refresh token rotation** for additional security
190
+
191
+ ## Customization Points
192
+
193
+ Replace these placeholders:
194
+ - `CONSUMER_KEY` → Your Connected App's Consumer Key
195
+ - `CALLBACK_URL` → Your registered callback URL (custom scheme for mobile)
196
+ - `CODE_VERIFIER` → Generated 43-128 character random string
197
+ - `CODE_CHALLENGE` → BASE64URL(SHA256(CODE_VERIFIER))