@salesforce/afv-skills 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/package.json +1 -1
  2. package/skills/activating-datacloud/CREDITS.md +5 -0
  3. package/skills/activating-datacloud/README.md +39 -0
  4. package/skills/activating-datacloud/SKILL.md +118 -0
  5. package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
  6. package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
  7. package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
  8. package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
  9. package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
  10. package/skills/building-omnistudio-callable-apex/README.md +80 -0
  11. package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
  12. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
  13. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
  14. package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
  15. package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
  16. package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
  17. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
  18. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
  19. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
  20. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
  21. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
  22. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
  23. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
  24. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
  25. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
  26. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
  27. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
  28. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
  29. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
  30. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
  31. package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
  32. package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
  33. package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
  34. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
  35. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
  36. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
  37. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
  38. package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
  39. package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
  40. package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
  41. package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
  42. package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
  43. package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
  44. package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
  45. package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
  46. package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
  47. package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
  48. package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
  49. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
  50. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
  51. package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
  52. package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
  53. package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
  54. package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
  55. package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
  56. package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
  57. package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
  58. package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
  59. package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
  60. package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
  61. package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
  62. package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
  63. package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
  64. package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
  65. package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
  66. package/skills/building-sf-integrations/CREDITS.md +5 -0
  67. package/skills/building-sf-integrations/README.md +95 -0
  68. package/skills/building-sf-integrations/SKILL.md +192 -0
  69. package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
  70. package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
  71. package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
  72. package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
  73. package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
  74. package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
  75. package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
  76. package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
  77. package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
  78. package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
  79. package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
  80. package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
  81. package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
  82. package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
  83. package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
  84. package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
  85. package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
  86. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
  87. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
  88. package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
  89. package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
  90. package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
  91. package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
  92. package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
  93. package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
  94. package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
  95. package/skills/building-sf-integrations/references/cli-reference.md +94 -0
  96. package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
  97. package/skills/building-sf-integrations/references/event-patterns.md +838 -0
  98. package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
  99. package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
  100. package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
  101. package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
  102. package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
  103. package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
  104. package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
  105. package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
  106. package/skills/building-sf-integrations/scripts/README.md +100 -0
  107. package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
  108. package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
  109. package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
  110. package/skills/configuring-connected-apps/CREDITS.md +3 -0
  111. package/skills/configuring-connected-apps/README.md +99 -0
  112. package/skills/configuring-connected-apps/SKILL.md +224 -0
  113. package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
  114. package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
  115. package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
  116. package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
  117. package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
  118. package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
  119. package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
  120. package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
  121. package/skills/configuring-connected-apps/references/example-usage.md +256 -0
  122. package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
  123. package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
  124. package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
  125. package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
  126. package/skills/connecting-datacloud/CREDITS.md +5 -0
  127. package/skills/connecting-datacloud/README.md +59 -0
  128. package/skills/connecting-datacloud/SKILL.md +155 -0
  129. package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
  130. package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
  131. package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
  132. package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
  133. package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
  134. package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
  135. package/skills/debugging-apex-logs/CREDITS.md +22 -0
  136. package/skills/debugging-apex-logs/README.md +74 -0
  137. package/skills/debugging-apex-logs/SKILL.md +172 -0
  138. package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
  139. package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
  140. package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
  141. package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
  142. package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
  143. package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
  144. package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
  145. package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
  146. package/skills/debugging-apex-logs/references/common-issues.md +68 -0
  147. package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
  148. package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
  149. package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
  150. package/skills/deploying-metadata/CREDITS.md +25 -0
  151. package/skills/deploying-metadata/README.md +104 -0
  152. package/skills/deploying-metadata/SKILL.md +214 -0
  153. package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
  154. package/skills/deploying-metadata/assets/package.xml +121 -0
  155. package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
  156. package/skills/deploying-metadata/references/deploy.sh +73 -0
  157. package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
  158. package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
  159. package/skills/deploying-metadata/references/orchestration.md +183 -0
  160. package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
  161. package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
  162. package/skills/deploying-omnistudio-datapacks/README.md +88 -0
  163. package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
  164. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
  165. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
  166. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
  167. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
  168. package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
  169. package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
  170. package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
  171. package/skills/developing-agentforce/references/actions-reference.md +8 -8
  172. package/skills/fetching-salesforce-docs/README.md +66 -0
  173. package/skills/fetching-salesforce-docs/SKILL.md +209 -0
  174. package/skills/fetching-salesforce-docs/requirements.txt +2 -0
  175. package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
  176. package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
  177. package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
  178. package/skills/generating-apex/CREDITS.md +1 -26
  179. package/skills/generating-apex-test/CREDITS.md +2 -27
  180. package/skills/generating-lwc-components/CREDITS.md +5 -0
  181. package/skills/generating-lwc-components/README.md +126 -0
  182. package/skills/generating-lwc-components/SKILL.md +191 -0
  183. package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
  184. package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
  185. package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
  186. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
  187. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
  188. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
  189. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
  190. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
  191. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
  192. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
  193. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
  194. package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
  195. package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
  196. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
  197. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
  198. package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
  199. package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
  200. package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
  201. package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
  202. package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
  203. package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
  204. package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
  205. package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
  206. package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
  207. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
  208. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
  209. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
  210. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
  211. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
  212. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
  213. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
  214. package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
  215. package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
  216. package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
  217. package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
  218. package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
  219. package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
  220. package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
  221. package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
  222. package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
  223. package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
  224. package/skills/generating-lwc-components/references/advanced-features.md +108 -0
  225. package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
  226. package/skills/generating-lwc-components/references/cli-commands.md +545 -0
  227. package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
  228. package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
  229. package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
  230. package/skills/generating-lwc-components/references/lms-guide.md +860 -0
  231. package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
  232. package/skills/generating-lwc-components/references/performance-guide.md +861 -0
  233. package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
  234. package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
  235. package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
  236. package/skills/generating-lwc-components/references/state-management.md +642 -0
  237. package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
  238. package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
  239. package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
  240. package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
  241. package/skills/generating-mermaid-diagrams/README.md +114 -0
  242. package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
  243. package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
  244. package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
  245. package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
  246. package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
  247. package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
  248. package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
  249. package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
  250. package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
  251. package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
  252. package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
  253. package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
  254. package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
  255. package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
  256. package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
  257. package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
  258. package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
  259. package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
  260. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
  261. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
  262. package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
  263. package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
  264. package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
  265. package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
  266. package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
  267. package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
  268. package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
  269. package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
  270. package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
  271. package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
  272. package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
  273. package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
  274. package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
  275. package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
  276. package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
  277. package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
  278. package/skills/generating-visual-diagrams/CREDITS.md +80 -0
  279. package/skills/generating-visual-diagrams/README.md +83 -0
  280. package/skills/generating-visual-diagrams/SKILL.md +208 -0
  281. package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
  282. package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
  283. package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
  284. package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
  285. package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
  286. package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
  287. package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
  288. package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
  289. package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
  290. package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
  291. package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
  292. package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
  293. package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
  294. package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
  295. package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
  296. package/skills/handling-sf-data/CREDITS.md +5 -0
  297. package/skills/handling-sf-data/README.md +112 -0
  298. package/skills/handling-sf-data/SKILL.md +235 -0
  299. package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
  300. package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
  301. package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
  302. package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
  303. package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
  304. package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
  305. package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
  306. package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
  307. package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
  308. package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
  309. package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
  310. package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
  311. package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
  312. package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
  313. package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
  314. package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
  315. package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
  316. package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
  317. package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
  318. package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
  319. package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
  320. package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
  321. package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
  322. package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
  323. package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
  324. package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
  325. package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
  326. package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
  327. package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
  328. package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
  329. package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
  330. package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
  331. package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
  332. package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
  333. package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
  334. package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
  335. package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
  336. package/skills/handling-sf-data/references/orchestration.md +174 -0
  337. package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
  338. package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
  339. package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
  340. package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
  341. package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
  342. package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
  343. package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
  344. package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
  345. package/skills/harmonizing-datacloud/CREDITS.md +3 -0
  346. package/skills/harmonizing-datacloud/README.md +31 -0
  347. package/skills/harmonizing-datacloud/SKILL.md +117 -0
  348. package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
  349. package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
  350. package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
  351. package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
  352. package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
  353. package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
  354. package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
  355. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
  356. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
  357. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
  358. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
  359. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
  360. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
  361. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
  362. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
  363. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
  364. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
  365. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
  366. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
  367. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
  368. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
  369. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
  370. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
  371. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
  372. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
  373. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
  374. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
  375. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
  376. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
  377. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
  378. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
  379. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
  380. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
  381. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
  382. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
  383. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
  384. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
  385. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
  386. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
  387. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
  388. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
  389. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
  390. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
  391. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
  392. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
  393. package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
  394. package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
  395. package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
  396. package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
  397. package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
  398. package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
  399. package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
  400. package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
  401. package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
  402. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
  403. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
  404. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
  405. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
  406. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
  407. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
  408. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
  409. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
  410. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
  411. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
  412. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
  413. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
  414. package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
  415. package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
  416. package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
  417. package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
  418. package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
  419. package/skills/orchestrating-datacloud/CREDITS.md +15 -0
  420. package/skills/orchestrating-datacloud/README.md +129 -0
  421. package/skills/orchestrating-datacloud/SKILL.md +236 -0
  422. package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
  423. package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
  424. package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
  425. package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
  426. package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
  427. package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
  428. package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
  429. package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
  430. package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
  431. package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
  432. package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
  433. package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
  434. package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
  435. package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
  436. package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
  437. package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
  438. package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
  439. package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
  440. package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
  441. package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
  442. package/skills/preparing-datacloud/CREDITS.md +7 -0
  443. package/skills/preparing-datacloud/README.md +51 -0
  444. package/skills/preparing-datacloud/SKILL.md +191 -0
  445. package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
  446. package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
  447. package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
  448. package/skills/querying-soql/CREDITS.md +21 -0
  449. package/skills/querying-soql/README.md +41 -0
  450. package/skills/querying-soql/SKILL.md +143 -0
  451. package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
  452. package/skills/querying-soql/assets/basic-queries.soql +188 -0
  453. package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
  454. package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
  455. package/skills/querying-soql/assets/relationship-queries.soql +203 -0
  456. package/skills/querying-soql/assets/selector-class.cls +219 -0
  457. package/skills/querying-soql/references/anti-patterns.md +348 -0
  458. package/skills/querying-soql/references/cli-commands.md +358 -0
  459. package/skills/querying-soql/references/field-coverage-rules.md +514 -0
  460. package/skills/querying-soql/references/query-optimization.md +142 -0
  461. package/skills/querying-soql/references/selector-patterns.md +479 -0
  462. package/skills/querying-soql/references/soql-reference.md +227 -0
  463. package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
  464. package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
  465. package/skills/retrieving-datacloud/CREDITS.md +7 -0
  466. package/skills/retrieving-datacloud/README.md +44 -0
  467. package/skills/retrieving-datacloud/SKILL.md +120 -0
  468. package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
  469. package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
  470. package/skills/running-apex-tests/CREDITS.md +22 -0
  471. package/skills/running-apex-tests/README.md +94 -0
  472. package/skills/running-apex-tests/SKILL.md +158 -0
  473. package/skills/running-apex-tests/assets/basic-test.cls +169 -0
  474. package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
  475. package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
  476. package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
  477. package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
  478. package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
  479. package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
  480. package/skills/running-apex-tests/references/cli-commands.md +289 -0
  481. package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
  482. package/skills/running-apex-tests/references/performance-optimization.md +283 -0
  483. package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
  484. package/skills/running-apex-tests/references/test-patterns.md +154 -0
  485. package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
  486. package/skills/segmenting-datacloud/CREDITS.md +3 -0
  487. package/skills/segmenting-datacloud/README.md +36 -0
  488. package/skills/segmenting-datacloud/SKILL.md +115 -0
@@ -0,0 +1,675 @@
1
+ <!-- Parent: generating-lwc-components/SKILL.md -->
2
+ # LWC Flow Integration Guide
3
+
4
+ This guide covers building Lightning Web Components for use in Salesforce Flow Screens.
5
+
6
+ ---
7
+
8
+ ## Overview
9
+
10
+ ```
11
+ ┌─────────────────────────────────────────────────────────────────────┐
12
+ │ FLOW ↔ LWC COMMUNICATION │
13
+ ├─────────────────────────────────────────────────────────────────────┤
14
+ │ │
15
+ │ ┌─────────────────┐ ┌─────────────────┐ │
16
+ │ │ FLOW │ │ LWC │ │
17
+ │ │ Variables │ │ Component │ │
18
+ │ └────────┬────────┘ └────────┬────────┘ │
19
+ │ │ │ │
20
+ │ │ @api (inputOnly) │ │
21
+ │ ├─────────────────────────────────────▶│ │
22
+ │ │ │ │
23
+ │ │ FlowAttributeChangeEvent (outputOnly)│ │
24
+ │ │◀─────────────────────────────────────┤ │
25
+ │ │ │ │
26
+ │ │ FlowNavigationFinishEvent │ │
27
+ │ │◀─────────────────────────────────────┤ │
28
+ │ │ (NEXT, BACK, FINISH, PAUSE) │ │
29
+ │ │
30
+ └─────────────────────────────────────────────────────────────────────┘
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Quick Reference
36
+
37
+ | Direction | Mechanism | Use Case |
38
+ |-----------|-----------|----------|
39
+ | Flow → LWC | `@api` with `role="inputOnly"` | Pass context data to component |
40
+ | LWC → Flow | `FlowAttributeChangeEvent` | Return user selections/data |
41
+ | LWC → Navigation | `FlowNavigationFinishEvent` | Trigger Next/Back/Finish |
42
+
43
+ ---
44
+
45
+ ## Meta.xml Configuration
46
+
47
+ ### Target Configuration
48
+
49
+ ```xml
50
+ <targets>
51
+ <target>lightning__FlowScreen</target>
52
+ </targets>
53
+ ```
54
+
55
+ ### Property Roles
56
+
57
+ ```xml
58
+ <targetConfig targets="lightning__FlowScreen">
59
+ <!-- INPUT: Flow → Component -->
60
+ <property
61
+ name="recordId"
62
+ type="String"
63
+ label="Record ID"
64
+ description="ID from Flow"
65
+ role="inputOnly"/>
66
+
67
+ <!-- OUTPUT: Component → Flow -->
68
+ <property
69
+ name="selectedValue"
70
+ type="String"
71
+ label="Selected Value"
72
+ description="User's selection"
73
+ role="outputOnly"/>
74
+ </targetConfig>
75
+ ```
76
+
77
+ ### Supported Property Types
78
+
79
+ | Type | Description | Example |
80
+ |------|-------------|---------|
81
+ | `String` | Text values | Record IDs, names |
82
+ | `Boolean` | True/false | Flags, completion status |
83
+ | `Integer` | Whole numbers | Counts, indexes |
84
+ | `Date` | Date values | Due dates |
85
+ | `DateTime` | Date and time | Timestamps |
86
+ | `@salesforce/schema/*` | SObject references | Record types |
87
+
88
+ ---
89
+
90
+ ## FlowAttributeChangeEvent
91
+
92
+ This is the **critical** mechanism for sending data back to Flow.
93
+
94
+ ### Import
95
+
96
+ ```javascript
97
+ import { FlowAttributeChangeEvent } from 'lightning/flowSupport';
98
+ ```
99
+
100
+ ### Usage
101
+
102
+ ```javascript
103
+ // Dispatch event to update Flow variable
104
+ // First param: @api property name (must match meta.xml exactly)
105
+ // Second param: new value
106
+ this.dispatchEvent(new FlowAttributeChangeEvent(
107
+ 'selectedRecordId', // Property name
108
+ this.recordId // Value
109
+ ));
110
+ ```
111
+
112
+ ### Example: Selection Handler
113
+
114
+ ```javascript
115
+ @api selectedRecordId;
116
+ @api selectedRecordName;
117
+
118
+ handleSelect(event) {
119
+ const id = event.target.dataset.id;
120
+ const name = event.target.dataset.name;
121
+
122
+ // Update local properties
123
+ this.selectedRecordId = id;
124
+ this.selectedRecordName = name;
125
+
126
+ // Notify Flow of BOTH changes
127
+ this.dispatchEvent(new FlowAttributeChangeEvent('selectedRecordId', id));
128
+ this.dispatchEvent(new FlowAttributeChangeEvent('selectedRecordName', name));
129
+ }
130
+ ```
131
+
132
+ ### Common Mistake
133
+
134
+ ```javascript
135
+ // ❌ WRONG: Only updating local property
136
+ this.selectedRecordId = id;
137
+
138
+ // ✅ CORRECT: Update AND dispatch event
139
+ this.selectedRecordId = id;
140
+ this.dispatchEvent(new FlowAttributeChangeEvent('selectedRecordId', id));
141
+ ```
142
+
143
+ ---
144
+
145
+ ## FlowNavigationFinishEvent
146
+
147
+ Programmatically trigger Flow navigation from your component.
148
+
149
+ ### Import
150
+
151
+ ```javascript
152
+ import { FlowNavigationFinishEvent } from 'lightning/flowSupport';
153
+ ```
154
+
155
+ ### Navigation Actions
156
+
157
+ | Action | Description | When Available |
158
+ |--------|-------------|----------------|
159
+ | `'NEXT'` | Go to next screen | Mid-flow screens |
160
+ | `'BACK'` | Go to previous screen | After first screen |
161
+ | `'FINISH'` | Complete the flow | Final screens |
162
+ | `'PAUSE'` | Pause flow (if enabled) | Pausable flows |
163
+
164
+ ### Usage
165
+
166
+ ```javascript
167
+ // Navigate to next screen
168
+ this.dispatchEvent(new FlowNavigationFinishEvent('NEXT'));
169
+
170
+ // Navigate back
171
+ this.dispatchEvent(new FlowNavigationFinishEvent('BACK'));
172
+
173
+ // Finish the flow
174
+ this.dispatchEvent(new FlowNavigationFinishEvent('FINISH'));
175
+ ```
176
+
177
+ ### Check Available Actions
178
+
179
+ Flow provides available actions via a special `@api` property:
180
+
181
+ ```javascript
182
+ // Automatically populated by Flow runtime
183
+ @api availableActions = [];
184
+
185
+ get canGoNext() {
186
+ return this.availableActions.includes('NEXT');
187
+ }
188
+
189
+ get canGoBack() {
190
+ return this.availableActions.includes('BACK');
191
+ }
192
+
193
+ handleNext() {
194
+ if (this.canGoNext) {
195
+ this.dispatchEvent(new FlowNavigationFinishEvent('NEXT'));
196
+ }
197
+ }
198
+ ```
199
+
200
+ ### Conditional Navigation Buttons
201
+
202
+ ```html
203
+ <template lwc:if={canGoBack}>
204
+ <lightning-button label="Back" onclick={handleBack}></lightning-button>
205
+ </template>
206
+
207
+ <template lwc:if={canGoNext}>
208
+ <lightning-button label="Next" variant="brand" onclick={handleNext}></lightning-button>
209
+ </template>
210
+ ```
211
+
212
+ ---
213
+
214
+ ## Validation Before Navigation
215
+
216
+ Always validate before allowing navigation:
217
+
218
+ ```javascript
219
+ handleNext() {
220
+ // Validate
221
+ if (!this.selectedRecordId) {
222
+ this.errorMessage = 'Please select a record.';
223
+ this.dispatchEvent(new FlowAttributeChangeEvent('errorMessage', this.errorMessage));
224
+ return;
225
+ }
226
+
227
+ // Clear error
228
+ this.errorMessage = null;
229
+ this.dispatchEvent(new FlowAttributeChangeEvent('errorMessage', null));
230
+
231
+ // Mark complete and navigate
232
+ this.isComplete = true;
233
+ this.dispatchEvent(new FlowAttributeChangeEvent('isComplete', true));
234
+ this.dispatchEvent(new FlowNavigationFinishEvent('NEXT'));
235
+ }
236
+ ```
237
+
238
+ ---
239
+
240
+ ## Apex Integration in Flow Context
241
+
242
+ ### Wire Service
243
+
244
+ ```javascript
245
+ import { wire } from 'lwc';
246
+ import getRecords from '@salesforce/apex/MyController.getRecords';
247
+
248
+ @api recordId; // From Flow
249
+
250
+ @wire(getRecords, { parentId: '$recordId' })
251
+ wiredRecords({ error, data }) {
252
+ if (data) {
253
+ this.records = data;
254
+ } else if (error) {
255
+ this.error = this.reduceErrors(error);
256
+ }
257
+ }
258
+ ```
259
+
260
+ ### Imperative Calls
261
+
262
+ ```javascript
263
+ import processRecord from '@salesforce/apex/MyController.processRecord';
264
+
265
+ async handleProcess() {
266
+ this.isLoading = true;
267
+ try {
268
+ const result = await processRecord({
269
+ recordId: this.selectedRecordId
270
+ });
271
+
272
+ if (result.success) {
273
+ this.dispatchEvent(new FlowNavigationFinishEvent('NEXT'));
274
+ } else {
275
+ this.errorMessage = result.message;
276
+ this.dispatchEvent(new FlowAttributeChangeEvent('errorMessage', result.message));
277
+ }
278
+ } catch (error) {
279
+ this.errorMessage = this.reduceErrors(error);
280
+ } finally {
281
+ this.isLoading = false;
282
+ }
283
+ }
284
+ ```
285
+
286
+ ---
287
+
288
+ ## Flow Context Variables
289
+
290
+ Flow provides special context via reserved variable names:
291
+
292
+ ```xml
293
+ <!-- In Flow Builder, map these to your component -->
294
+ <property name="recordId" value="{!$Record.Id}"/>
295
+ <property name="objectApiName" value="{!$Record.Object}"/>
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Testing LWC in Flows
301
+
302
+ ### Jest Testing
303
+
304
+ ```javascript
305
+ import { createElement } from 'lwc';
306
+ import FlowScreenComponent from 'c/flowScreenComponent';
307
+ import { FlowAttributeChangeEvent, FlowNavigationFinishEvent } from 'lightning/flowSupport';
308
+
309
+ // Mock the flow support module
310
+ jest.mock('lightning/flowSupport', () => ({
311
+ FlowAttributeChangeEvent: jest.fn(),
312
+ FlowNavigationFinishEvent: jest.fn()
313
+ }), { virtual: true });
314
+
315
+ describe('c-flow-screen-component', () => {
316
+ afterEach(() => {
317
+ while (document.body.firstChild) {
318
+ document.body.removeChild(document.body.firstChild);
319
+ }
320
+ jest.clearAllMocks();
321
+ });
322
+
323
+ it('dispatches FlowAttributeChangeEvent on selection', async () => {
324
+ const element = createElement('c-flow-screen-component', {
325
+ is: FlowScreenComponent
326
+ });
327
+ element.availableActions = ['NEXT', 'BACK'];
328
+ document.body.appendChild(element);
329
+
330
+ // Simulate selection
331
+ const tile = element.shadowRoot.querySelector('.record-tile');
332
+ tile.click();
333
+
334
+ // Verify event dispatched
335
+ expect(FlowAttributeChangeEvent).toHaveBeenCalled();
336
+ });
337
+
338
+ it('dispatches FlowNavigationFinishEvent on next', async () => {
339
+ const element = createElement('c-flow-screen-component', {
340
+ is: FlowScreenComponent
341
+ });
342
+ element.availableActions = ['NEXT'];
343
+ element.selectedRecordId = '001xx000000001';
344
+ document.body.appendChild(element);
345
+
346
+ // Click next button
347
+ const nextButton = element.shadowRoot.querySelector('lightning-button[label="Next"]');
348
+ nextButton.click();
349
+
350
+ // Verify navigation event
351
+ expect(FlowNavigationFinishEvent).toHaveBeenCalledWith('NEXT');
352
+ });
353
+ });
354
+ ```
355
+
356
+ ### Manual Testing
357
+
358
+ 1. Create a Screen Flow in Setup
359
+ 2. Add your LWC component to a screen
360
+ 3. Map input/output variables
361
+ 4. Test in Flow debug mode
362
+ 5. Verify variable values in debug panel
363
+
364
+ ---
365
+
366
+ ## Common Patterns
367
+
368
+ ### Selection with Confirmation
369
+
370
+ ```javascript
371
+ handleSelect(event) {
372
+ this.selectedId = event.target.dataset.id;
373
+ // Don't navigate yet - wait for explicit confirmation
374
+ }
375
+
376
+ handleConfirm() {
377
+ if (!this.selectedId) {
378
+ this.showError('Please select an item');
379
+ return;
380
+ }
381
+
382
+ this.dispatchEvent(new FlowAttributeChangeEvent('selectedId', this.selectedId));
383
+ this.dispatchEvent(new FlowNavigationFinishEvent('NEXT'));
384
+ }
385
+ ```
386
+
387
+ ### Multi-Select to Collection
388
+
389
+ ```javascript
390
+ @api selectedIds = [];
391
+
392
+ handleToggle(event) {
393
+ const id = event.target.dataset.id;
394
+
395
+ if (this.selectedIds.includes(id)) {
396
+ this.selectedIds = this.selectedIds.filter(i => i !== id);
397
+ } else {
398
+ this.selectedIds = [...this.selectedIds, id];
399
+ }
400
+
401
+ // Send collection back to Flow
402
+ this.dispatchEvent(new FlowAttributeChangeEvent('selectedIds', this.selectedIds));
403
+ }
404
+ ```
405
+
406
+ ### Conditional Screen (Skip Logic)
407
+
408
+ ```javascript
409
+ connectedCallback() {
410
+ // Auto-skip if condition met
411
+ if (this.shouldSkip) {
412
+ this.dispatchEvent(new FlowNavigationFinishEvent('NEXT'));
413
+ }
414
+ }
415
+ ```
416
+
417
+ ---
418
+
419
+ ## Troubleshooting
420
+
421
+ | Issue | Cause | Solution |
422
+ |-------|-------|----------|
423
+ | Output not updating in Flow | Missing FlowAttributeChangeEvent | Always dispatch event after updating @api property |
424
+ | Navigation buttons not showing | Wrong availableActions | Check Flow provides availableActions correctly |
425
+ | Component not appearing | Missing `isExposed: true` | Set in meta.xml |
426
+ | Properties not mapping | Role mismatch | Use `inputOnly` for inputs, `outputOnly` for outputs |
427
+ | Values reset on navigation | Local state not persisted | Use @api properties for all persisted data |
428
+
429
+ ---
430
+
431
+ ## Template
432
+
433
+ Use the template at `assets/flow-screen-component/` as a starting point.
434
+
435
+ ---
436
+
437
+ ## Passing sObjects and Wrapper Classes to Flow
438
+
439
+ ### Overview
440
+
441
+ Flow can receive complex Apex types through `apex://` type bindings. This enables:
442
+ - Passing sObjects directly (not just IDs)
443
+ - Passing wrapper/DTO classes with multiple fields
444
+ - Two-way data binding for record editing
445
+
446
+ ### apex:// Type Syntax
447
+
448
+ In your meta.xml, reference Apex classes using the `apex://` prefix:
449
+
450
+ ```xml
451
+ <targetConfig targets="lightning__FlowScreen">
452
+ <!-- Pass entire Account record -->
453
+ <property
454
+ name="accountRecord"
455
+ type="apex://Account"
456
+ label="Account Record"
457
+ role="inputOnly"/>
458
+
459
+ <!-- Pass custom wrapper class -->
460
+ <property
461
+ name="orderSummary"
462
+ type="apex://OrderController.OrderSummaryWrapper"
463
+ label="Order Summary"
464
+ role="inputOnly"/>
465
+
466
+ <!-- Output a modified record -->
467
+ <property
468
+ name="updatedAccount"
469
+ type="apex://Account"
470
+ label="Updated Account"
471
+ role="outputOnly"/>
472
+ </targetConfig>
473
+ ```
474
+
475
+ ### Wrapper Class Requirements
476
+
477
+ Apex wrapper classes must be **public** and have **public properties**:
478
+
479
+ ```apex
480
+ public class OrderController {
481
+
482
+ // Wrapper class for Flow
483
+ public class OrderSummaryWrapper {
484
+ @AuraEnabled public String orderId;
485
+ @AuraEnabled public String orderName;
486
+ @AuraEnabled public Decimal totalAmount;
487
+ @AuraEnabled public List<LineItemWrapper> lineItems;
488
+ @AuraEnabled public Account customer;
489
+ }
490
+
491
+ public class LineItemWrapper {
492
+ @AuraEnabled public String productName;
493
+ @AuraEnabled public Integer quantity;
494
+ @AuraEnabled public Decimal unitPrice;
495
+ }
496
+
497
+ // Invocable method to create the wrapper
498
+ @InvocableMethod(label='Get Order Summary')
499
+ public static List<OrderSummaryWrapper> getOrderSummary(List<Id> orderIds) {
500
+ // Query and build wrapper...
501
+ }
502
+ }
503
+ ```
504
+
505
+ ### Using sObjects in LWC
506
+
507
+ ```javascript
508
+ import { api, LightningElement } from 'lwc';
509
+ import { FlowAttributeChangeEvent } from 'lightning/flowSupport';
510
+
511
+ export default class AccountEditor extends LightningElement {
512
+ // Receive sObject from Flow
513
+ @api accountRecord;
514
+
515
+ // Track local modifications
516
+ _modifiedAccount;
517
+
518
+ connectedCallback() {
519
+ // Create a working copy
520
+ this._modifiedAccount = { ...this.accountRecord };
521
+ }
522
+
523
+ handleNameChange(event) {
524
+ this._modifiedAccount.Name = event.target.value;
525
+ }
526
+
527
+ handleSave() {
528
+ // Send modified record back to Flow
529
+ this.dispatchEvent(
530
+ new FlowAttributeChangeEvent('updatedAccount', this._modifiedAccount)
531
+ );
532
+ }
533
+ }
534
+ ```
535
+
536
+ ### Using Wrapper Classes in LWC
537
+
538
+ ```javascript
539
+ import { api, LightningElement } from 'lwc';
540
+
541
+ export default class OrderSummaryViewer extends LightningElement {
542
+ @api orderSummary; // apex://OrderController.OrderSummaryWrapper
543
+
544
+ get formattedTotal() {
545
+ return this.orderSummary?.totalAmount?.toLocaleString('en-US', {
546
+ style: 'currency',
547
+ currency: 'USD'
548
+ });
549
+ }
550
+
551
+ get lineItems() {
552
+ return this.orderSummary?.lineItems || [];
553
+ }
554
+
555
+ get customerName() {
556
+ // Access nested sObject
557
+ return this.orderSummary?.customer?.Name || 'Unknown';
558
+ }
559
+ }
560
+ ```
561
+
562
+ ### Flow Configuration for apex:// Types
563
+
564
+ 1. **Create an Invocable Action** that returns your wrapper:
565
+ ```apex
566
+ @InvocableMethod
567
+ public static List<MyWrapper> getData(List<String> inputs) { ... }
568
+ ```
569
+
570
+ 2. **In Flow Builder**, call the Invocable Action before the screen
571
+
572
+ 3. **Store result** in an Apex-Defined Variable
573
+
574
+ 4. **Pass to LWC** via the screen component input mapping
575
+
576
+ ### Common Patterns
577
+
578
+ #### Pattern 1: Record Edit with Validation
579
+
580
+ ```javascript
581
+ // LWC that receives, edits, and returns an sObject
582
+ @api inputRecord; // apex://Contact (inputOnly)
583
+ @api outputRecord; // apex://Contact (outputOnly)
584
+ @api isValid = false; // Boolean (outputOnly)
585
+
586
+ handleFieldChange(event) {
587
+ const field = event.target.dataset.field;
588
+ this.workingRecord[field] = event.target.value;
589
+
590
+ // Validate and update outputs
591
+ this.isValid = this.validateRecord();
592
+ this.dispatchEvent(new FlowAttributeChangeEvent('outputRecord', this.workingRecord));
593
+ this.dispatchEvent(new FlowAttributeChangeEvent('isValid', this.isValid));
594
+ }
595
+ ```
596
+
597
+ #### Pattern 2: Multi-Record Selection
598
+
599
+ ```javascript
600
+ // Select from a list, output selected items
601
+ @api availableRecords; // apex://Account[] (inputOnly)
602
+ @api selectedRecords = []; // apex://Account[] (outputOnly)
603
+
604
+ handleSelect(event) {
605
+ const id = event.target.dataset.id;
606
+ const record = this.availableRecords.find(r => r.Id === id);
607
+
608
+ if (record && !this.selectedRecords.find(r => r.Id === id)) {
609
+ this.selectedRecords = [...this.selectedRecords, record];
610
+ this.dispatchEvent(
611
+ new FlowAttributeChangeEvent('selectedRecords', this.selectedRecords)
612
+ );
613
+ }
614
+ }
615
+ ```
616
+
617
+ #### Pattern 3: Master-Detail Editing
618
+
619
+ ```javascript
620
+ // Edit parent with nested child records
621
+ @api orderWrapper; // apex://OrderController.OrderWithLines (inputOnly)
622
+ @api updatedOrder; // apex://OrderController.OrderWithLines (outputOnly)
623
+
624
+ handleLineItemChange(event) {
625
+ const index = event.target.dataset.index;
626
+ const field = event.target.dataset.field;
627
+ const value = event.target.value;
628
+
629
+ // Update nested structure
630
+ const updated = JSON.parse(JSON.stringify(this.orderWrapper));
631
+ updated.lineItems[index][field] = value;
632
+
633
+ // Recalculate totals
634
+ updated.totalAmount = updated.lineItems.reduce(
635
+ (sum, item) => sum + (item.quantity * item.unitPrice), 0
636
+ );
637
+
638
+ this.updatedOrder = updated;
639
+ this.dispatchEvent(new FlowAttributeChangeEvent('updatedOrder', updated));
640
+ }
641
+ ```
642
+
643
+ ### Limitations
644
+
645
+ | Limitation | Workaround |
646
+ |------------|------------|
647
+ | No `@JsonAccess` support | Ensure wrapper classes don't require JSON annotation |
648
+ | 1000 record limit per collection | Paginate or filter in Apex before passing |
649
+ | No generic types | Create specific wrapper classes |
650
+ | Complex nesting depth | Flatten deep hierarchies |
651
+
652
+ ### Debugging Tips
653
+
654
+ 1. **Console log received data** to verify structure:
655
+ ```javascript
656
+ connectedCallback() {
657
+ console.log('Received from Flow:', JSON.stringify(this.inputWrapper));
658
+ }
659
+ ```
660
+
661
+ 2. **Check Apex class visibility** - inner classes need `public` modifier
662
+
663
+ 3. **Verify @AuraEnabled** on all properties you need to access
664
+
665
+ ---
666
+
667
+ ## Cross-Skill Integration
668
+
669
+ | Integration | See Also |
670
+ |-------------|----------|
671
+ | Flow → Apex → LWC | [triangle-pattern.md](triangle-pattern.md) |
672
+ | Apex @AuraEnabled | [sf-apex/references/best-practices.md](../../sf-apex/references/best-practices.md) |
673
+ | Flow Templates | [sf-flow/assets/](../../sf-flow/assets/) |
674
+ | Async Notifications | [async-notification-patterns.md](async-notification-patterns.md) |
675
+ | State Management | [state-management.md](state-management.md) |