@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,291 @@
1
+ <!-- Parent: building-omnistudio-flexcard/SKILL.md -->
2
+
3
+ # FlexCard Best Practices
4
+
5
+ ## Layout Design Patterns
6
+
7
+ ### Single Card
8
+
9
+ Use for displaying summary information about a single record. Group related fields into logical sections.
10
+
11
+ ```
12
+ ┌──────────────────────────────────┐
13
+ │ Header: Record Name │
14
+ ├──────────────────────────────────┤
15
+ │ Section 1: Key Details │
16
+ │ ┌────────────┬─────────────┐ │
17
+ │ │ Field A │ Field B │ │
18
+ │ │ Field C │ Field D │ │
19
+ │ └────────────┴─────────────┘ │
20
+ ├──────────────────────────────────┤
21
+ │ Section 2: Status │
22
+ │ ┌──────────────────────────┐ │
23
+ │ │ Status Badge │ Date │ │
24
+ │ └──────────────────────────┘ │
25
+ ├──────────────────────────────────┤
26
+ │ [Action Button 1] [Action 2] │
27
+ └──────────────────────────────────┘
28
+ ```
29
+
30
+ **Guidelines:**
31
+ - Limit to 8-10 fields per card to avoid information overload
32
+ - Place the most important fields in the top section
33
+ - Use consistent field alignment (label-left or label-top)
34
+ - Group related fields in the same row when they share context
35
+
36
+ ### Card List
37
+
38
+ Use for displaying a collection of related records. Each card in the list renders from one item in the data source array.
39
+
40
+ ```
41
+ ┌──────────────────────────────────┐
42
+ │ Card 1: Record A │
43
+ │ Field 1 | Field 2 | [Action] │
44
+ ├──────────────────────────────────┤
45
+ │ Card 2: Record B │
46
+ │ Field 1 | Field 2 | [Action] │
47
+ ├──────────────────────────────────┤
48
+ │ Card 3: Record C │
49
+ │ Field 1 | Field 2 | [Action] │
50
+ └──────────────────────────────────┘
51
+ Showing 1-3 of 15 [Next →]
52
+ ```
53
+
54
+ **Guidelines:**
55
+ - Keep each list card compact (3-5 fields maximum)
56
+ - Include a clear identifier field (Name, Title, or ID) in each card
57
+ - Add pagination when the data source can return more than 10 records
58
+ - Use consistent card height to maintain visual rhythm
59
+ - Provide a "View All" link when the list is truncated
60
+
61
+ ### Tabbed Card
62
+
63
+ Use when a single record has multiple contexts worth displaying. Each tab represents a different state with its own data source or field set.
64
+
65
+ ```
66
+ ┌──────────────────────────────────┐
67
+ │ [Tab 1: Overview] [Tab 2: History] [Tab 3: Related] │
68
+ ├──────────────────────────────────┤
69
+ │ Tab 1 Content │
70
+ │ ┌──────────────────────────┐ │
71
+ │ │ Fields for this context │ │
72
+ │ └──────────────────────────┘ │
73
+ └──────────────────────────────────┘
74
+ ```
75
+
76
+ **Guidelines:**
77
+ - Limit to 3-5 tabs to avoid horizontal overflow
78
+ - Use concise tab labels (1-2 words)
79
+ - Load non-active tab data lazily (on tab selection)
80
+ - Mark the default active tab based on the most common use case
81
+
82
+ ### Flyout Card
83
+
84
+ Use for progressive disclosure: show a summary, then expand for details on demand.
85
+
86
+ ```
87
+ ┌──────────────────────────────────┐
88
+ │ Summary: Key Fields [▼ More] │
89
+ └──────────────────────────────────┘
90
+ ↓ (on click)
91
+ ┌──────────────────────────────────┐
92
+ │ Summary: Key Fields [▲ Less] │
93
+ ├──────────────────────────────────┤
94
+ │ Detail Section │
95
+ │ Additional fields, history, │
96
+ │ related records, etc. │
97
+ └──────────────────────────────────┘
98
+ ```
99
+
100
+ **Guidelines:**
101
+ - Keep the summary to 2-3 fields that answer "what is this?"
102
+ - Load flyout content on demand, not on initial card render
103
+ - Provide a clear visual indicator for the expand/collapse action
104
+ - Maintain the flyout state if the user scrolls away and returns
105
+
106
+ ---
107
+
108
+ ## Data Source Optimization
109
+
110
+ ### Minimize IP Calls
111
+
112
+ - Use a single IP that returns all required data rather than multiple IPs for individual fields
113
+ - If the card has multiple data sources, ensure they do not query overlapping data
114
+ - Cache IP responses where the data does not change frequently (use IP caching options)
115
+
116
+ ### Input Parameter Efficiency
117
+
118
+ - Pass only the parameters the IP needs; do not forward the entire page context
119
+ - Use `{recordId}` as the primary context parameter for record-level cards
120
+ - Avoid passing large objects as input parameters; pass IDs and let the IP query
121
+
122
+ ### Response Structure
123
+
124
+ - Design IP responses to match the FlexCard's field mapping structure directly
125
+ - Avoid deep nesting in IP responses when the FlexCard only needs top-level fields
126
+ - Use `resultListPath` to point directly to the array node in list-type cards
127
+
128
+ ### Error Handling in Data Sources
129
+
130
+ - Configure a fallback state for when the IP returns an error
131
+ - Set reasonable timeout values for data source calls
132
+ - Log data source errors for debugging without exposing raw error messages to end users
133
+
134
+ ---
135
+
136
+ ## Action Configuration
137
+
138
+ ### OmniScript Launch Actions
139
+
140
+ | Consideration | Guidance |
141
+ |---------------|----------|
142
+ | **Parameter mapping** | Map card data fields to OmniScript input fields explicitly |
143
+ | **Pre-population** | Pass enough context for the OmniScript to pre-fill known values |
144
+ | **Return handling** | Refresh the FlexCard data source after the OmniScript completes |
145
+ | **Error states** | Handle the case where the OmniScript fails or is cancelled |
146
+
147
+ ### Navigation Actions
148
+
149
+ | Consideration | Guidance |
150
+ |---------------|----------|
151
+ | **Record navigation** | Use `{recordId}` merge fields, not hardcoded IDs |
152
+ | **URL navigation** | Use relative URLs for internal Salesforce navigation |
153
+ | **External URLs** | Open in a new tab; warn users if leaving Salesforce |
154
+ | **Conditional navigation** | Disable navigation buttons when the target is invalid |
155
+
156
+ ### Action Button Placement
157
+
158
+ - Place primary actions at the bottom of the card or in the card header
159
+ - Limit to 2-3 actions per card; use a "More Actions" overflow menu for additional actions
160
+ - Use descriptive button labels ("Submit Claim", not "Submit" or "Go")
161
+ - Visually distinguish primary actions (filled button) from secondary actions (outline button)
162
+
163
+ ---
164
+
165
+ ## SLDS Compliance for Styling
166
+
167
+ ### Required Practices
168
+
169
+ - Use SLDS design tokens for all colors, spacing, font sizes, and border radii
170
+ - Use `slds-card` or `slds-tile` patterns for card containers
171
+ - Use `slds-grid` and `slds-col` for multi-column layouts within cards
172
+ - Apply `slds-text-heading_small` and related text utilities for consistent typography
173
+
174
+ ### Color Usage
175
+
176
+ ```
177
+ Correct: Use SLDS token → var(--slds-g-color-brand-base-50)
178
+ Wrong: Hardcoded hex → #0176d3
179
+ Wrong: Hardcoded rgb → rgb(1, 118, 211)
180
+ ```
181
+
182
+ - Status indicators: use `slds-badge` with appropriate color variants
183
+ - Background colors: use `slds-box` with `slds-theme_shade` or `slds-theme_default`
184
+ - Text colors: rely on inherited SLDS text colors; override only when necessary
185
+
186
+ ### Spacing
187
+
188
+ - Use SLDS spacing utilities: `slds-m-top_small`, `slds-p-around_medium`, etc.
189
+ - Maintain consistent spacing between card sections (use `slds-m-bottom_medium`)
190
+ - Do not use pixel values directly; map to the SLDS spacing scale
191
+
192
+ ### Dark Mode Compatibility
193
+
194
+ - All colors must come from SLDS CSS custom properties (`--slds-g-color-*`)
195
+ - Test card rendering in both light and dark modes
196
+ - Avoid background images that only work on light backgrounds
197
+ - Use `currentColor` for icon fills so they adapt to the text color
198
+
199
+ ---
200
+
201
+ ## Accessibility Requirements
202
+
203
+ ### Interactive Elements
204
+
205
+ - Every button must have an `aria-label` or visible text label
206
+ - Links must have descriptive text (not "Click here" or "Learn more" without context)
207
+ - Icon-only buttons require `aria-label` describing the action
208
+
209
+ ### Keyboard Navigation
210
+
211
+ - All action buttons must be focusable via Tab key
212
+ - Buttons must activate on Enter and Space key presses
213
+ - Tab order must follow the visual reading order (top-to-bottom, left-to-right)
214
+ - Flyout expand/collapse must be keyboard accessible
215
+
216
+ ### Screen Reader Support
217
+
218
+ - Use semantic heading elements for card titles and section headers
219
+ - Data fields should have associated labels readable by screen readers
220
+ - Status indicators must convey meaning through text, not color alone
221
+ - Dynamic content updates should use `aria-live` regions
222
+
223
+ ### Color Contrast
224
+
225
+ - Text on card backgrounds must meet WCAG 2.1 AA contrast ratio (4.5:1)
226
+ - Interactive element boundaries must have 3:1 contrast against their background
227
+ - Do not use color as the sole method of conveying information (add icons or text)
228
+
229
+ ---
230
+
231
+ ## Performance with Large Data Sets
232
+
233
+ ### Data Volume Guidelines
234
+
235
+ | Record Count | Recommended Approach |
236
+ |-------------|---------------------|
237
+ | 1-5 | Load all records in a single card list |
238
+ | 6-25 | Load with pagination (show 5-10 per page) |
239
+ | 26-100 | Server-side pagination via IP; load one page at a time |
240
+ | 100+ | Reconsider the UX; use search/filter instead of browsing |
241
+
242
+ ### Rendering Performance
243
+
244
+ - Limit child card nesting to 2 levels maximum
245
+ - Avoid rendering more than 25 cards simultaneously in a card list
246
+ - Use conditional visibility to hide sections rather than rendering and hiding with CSS
247
+ - Lazy-load tab content and flyout details on user interaction
248
+
249
+ ### Data Source Performance
250
+
251
+ - Set appropriate IP cache durations for data that does not change frequently
252
+ - Avoid chaining multiple IPs when a single IP can return all needed data
253
+ - Use `resultListPath` to avoid client-side data transformation
254
+ - Monitor IP execution times; optimize IPs that take longer than 2 seconds
255
+
256
+ ---
257
+
258
+ ## Child Card Composition
259
+
260
+ ### When to Use Child Cards
261
+
262
+ - The parent card displays summary data and the child card shows related detail
263
+ - Multiple cards share a common layout pattern that should be defined once
264
+ - Different sections of a card require independent data sources
265
+
266
+ ### Composition Guidelines
267
+
268
+ - Pass data from parent to child via input parameters, not global variables
269
+ - Keep child cards self-contained: they should work independently for testing
270
+ - Limit nesting to 2 levels (parent → child → grandchild maximum)
271
+ - Document the parent-child data flow in the FlexCard's description
272
+
273
+ ### Data Flow Pattern
274
+
275
+ ```
276
+ Parent FlexCard
277
+ ├── Data Source: IP_GetAccountSummary
278
+ │ └── Passes {AccountId} to child
279
+ └── Child FlexCard: AccountContacts
280
+ └── Data Source: IP_GetContacts
281
+ └── Input: {AccountId} from parent
282
+ ```
283
+
284
+ ### Avoiding Composition Anti-Patterns
285
+
286
+ | Anti-Pattern | Problem | Solution |
287
+ |-------------|---------|----------|
288
+ | Deep nesting (3+ levels) | Performance degradation, hard to debug | Flatten the structure; combine data in the IP |
289
+ | Shared mutable state | Child cards modifying parent data | Use one-way data flow (parent → child only) |
290
+ | Duplicate data sources | Same IP called by parent and child | Consolidate into parent data source; pass results down |
291
+ | Tightly coupled children | Child card cannot function without parent | Design children to accept input parameters and work standalone |
@@ -0,0 +1,311 @@
1
+ <!-- Parent: building-omnistudio-flexcard/SKILL.md -->
2
+
3
+ # FlexCard Data Binding Guide
4
+
5
+ ## Integration Procedure Data Source Configuration
6
+
7
+ ### Basic IP Binding
8
+
9
+ The most common FlexCard data source is an Integration Procedure. The data source configuration specifies which IP to call, what input to send, and where to find the results in the IP response.
10
+
11
+ ```json
12
+ {
13
+ "dataSource": {
14
+ "type": "IntegrationProcedures",
15
+ "value": {
16
+ "ipMethod": "Type_SubType",
17
+ "inputMap": {
18
+ "recordId": "{recordId}"
19
+ },
20
+ "resultListPath": ""
21
+ }
22
+ }
23
+ }
24
+ ```
25
+
26
+ | Property | Purpose | Example |
27
+ |----------|---------|---------|
28
+ | `type` | Data source type identifier | `"IntegrationProcedures"` (plural, capital P) |
29
+ | `ipMethod` | IP Type and SubType joined by underscore | `"Account_GetSummary"` |
30
+ | `inputMap` | Key-value pairs sent as IP input | `{ "recordId": "{recordId}" }` |
31
+ | `resultListPath` | JSON path to the array node for list-type cards | `"records"` or `""` for root |
32
+
33
+ ### IP Method Naming Convention
34
+
35
+ The `ipMethod` value combines the IP's Type and SubType fields:
36
+
37
+ ```
38
+ IP Type: "Account"
39
+ IP SubType: "GetSummary"
40
+ ipMethod: "Account_GetSummary"
41
+ ```
42
+
43
+ Ensure the IP is active and the Type/SubType match exactly (case-sensitive).
44
+
45
+ ### Input Map Parameters
46
+
47
+ Input parameters pass context from the FlexCard's hosting environment into the IP:
48
+
49
+ ```json
50
+ {
51
+ "inputMap": {
52
+ "recordId": "{recordId}",
53
+ "accountId": "{Account.Id}",
54
+ "status": "Active",
55
+ "limit": 10
56
+ }
57
+ }
58
+ ```
59
+
60
+ | Syntax | Resolves To |
61
+ |--------|------------|
62
+ | `{recordId}` | The current record's ID from the hosting Lightning page |
63
+ | `{Account.Id}` | A field from a parent FlexCard's data source |
64
+ | `"Active"` | A static/literal value |
65
+ | `{param.customKey}` | A URL parameter or custom context variable |
66
+
67
+ ---
68
+
69
+ ## Field Mapping Syntax
70
+
71
+ ### Basic Field Mapping
72
+
73
+ Map IP response fields to FlexCard display elements using curly-brace merge syntax:
74
+
75
+ ```
76
+ IP Response JSON: FlexCard Merge Field:
77
+ ───────────────── ─────────────────────
78
+ { "Name": "Acme Corp" } → {Name}
79
+ { "Status": "Active" } → {Status}
80
+ { "Amount": 50000 } → {Amount}
81
+ ```
82
+
83
+ ### Nested Field Mapping
84
+
85
+ Access nested objects in the IP response using dot notation:
86
+
87
+ ```
88
+ IP Response JSON: FlexCard Merge Field:
89
+ ───────────────── ─────────────────────
90
+ { → {Account.Name}
91
+ "Account": { → {Account.Industry}
92
+ "Name": "Acme Corp", → {Account.Owner.Name}
93
+ "Industry": "Technology",
94
+ "Owner": {
95
+ "Name": "Jane Smith"
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ ### Array Field Mapping
102
+
103
+ For card list layouts, set `resultListPath` to the array node. Each card in the list renders one item from the array:
104
+
105
+ ```json
106
+ {
107
+ "dataSource": {
108
+ "value": {
109
+ "ipMethod": "Contact_GetRelated",
110
+ "resultListPath": "contacts"
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ```
117
+ IP Response: Each Card Renders:
118
+ ──────────── ──────────────────
119
+ { Card 1: {Name} → "Alice"
120
+ "contacts": [ {Email} → "alice@acme.com"
121
+ { "Name": "Alice", "Email": "..." },
122
+ { "Name": "Bob", "Email": "..." }, Card 2: {Name} → "Bob"
123
+ { "Name": "Carol", "Email": "..." } {Email} → "bob@acme.com"
124
+ ]
125
+ } Card 3: {Name} → "Carol"
126
+ {Email} → "carol@acme.com"
127
+ ```
128
+
129
+ ### Formatted Field Display
130
+
131
+ Apply formatting to merge fields for display:
132
+
133
+ | Format Need | Approach |
134
+ |-------------|----------|
135
+ | Currency | Format in the IP response (e.g., return `"$50,000.00"`) or use OmniStudio formatting |
136
+ | Date | Return ISO date from IP; apply date formatting in the FlexCard field configuration |
137
+ | Boolean | Use conditional rendering to show icons or text instead of true/false |
138
+ | Percentage | Return as a number; format display in the FlexCard field |
139
+
140
+ ---
141
+
142
+ ## Conditional Rendering Based on Data
143
+
144
+ ### Field-Level Visibility
145
+
146
+ Show or hide individual fields based on a data value:
147
+
148
+ ```
149
+ Condition: {Status} == "Active"
150
+ Action: Show the "Renewal Date" field
151
+
152
+ Condition: {Amount} > 100000
153
+ Action: Show the "High Value" badge
154
+
155
+ Condition: {Email} != null
156
+ Action: Show the email field (hide when null)
157
+ ```
158
+
159
+ ### State-Level Visibility
160
+
161
+ FlexCards support multiple states. Each state can have visibility conditions:
162
+
163
+ | State | Visibility Condition | Use Case |
164
+ |-------|---------------------|----------|
165
+ | Default | Always visible | Primary card content |
166
+ | Empty | Data source returns 0 records | "No records found" message |
167
+ | Error | Data source returns error | Error notification |
168
+ | Conditional | Field matches specific value | Status-specific card layout |
169
+
170
+ ### Conditional Rendering Operators
171
+
172
+ | Operator | Syntax | Example |
173
+ |----------|--------|---------|
174
+ | Equals | `==` | `{Status} == "Active"` |
175
+ | Not equals | `!=` | `{Status} != "Closed"` |
176
+ | Greater than | `>` | `{Amount} > 10000` |
177
+ | Less than | `<` | `{DaysOpen} < 30` |
178
+ | Contains | `CONTAINS` | `{Name} CONTAINS "Corp"` |
179
+ | Is null | `== null` | `{Email} == null` |
180
+ | Is not null | `!= null` | `{Phone} != null` |
181
+
182
+ ### Conditional Styling
183
+
184
+ Apply different styles based on data values:
185
+
186
+ ```
187
+ If {Status} == "Active" → Green badge (slds-badge slds-theme_success)
188
+ If {Status} == "Expired" → Red badge (slds-badge slds-theme_error)
189
+ If {Status} == "Pending" → Yellow badge (slds-badge slds-theme_warning)
190
+ ```
191
+
192
+ Use SLDS theme classes rather than inline color styles to maintain dark mode compatibility.
193
+
194
+ ---
195
+
196
+ ## Multi-Data-Source Cards
197
+
198
+ ### When to Use Multiple Data Sources
199
+
200
+ - The card displays data from unrelated objects that cannot be fetched in a single IP
201
+ - Different sections of the card have different refresh requirements
202
+ - A child card needs its own independent data source
203
+
204
+ ### Configuration Pattern
205
+
206
+ ```
207
+ FlexCard: AccountOverview
208
+ ├── Data Source 1: "Account_GetSummary"
209
+ │ Input: { "recordId": "{recordId}" }
210
+ │ Fields: {ds1.Name}, {ds1.Industry}, {ds1.Status}
211
+
212
+ ├── Data Source 2: "Case_GetOpenCount"
213
+ │ Input: { "accountId": "{recordId}" }
214
+ │ Fields: {ds2.openCaseCount}, {ds2.lastCaseDate}
215
+
216
+ └── Data Source 3: "Opportunity_GetPipeline"
217
+ Input: { "accountId": "{recordId}" }
218
+ Fields: {ds3.totalPipeline}, {ds3.nextCloseDate}
219
+ ```
220
+
221
+ ### Data Source Naming
222
+
223
+ When a card has multiple data sources, reference fields using the data source name prefix:
224
+
225
+ ```
226
+ Single data source: {Name}
227
+ Multiple data sources: {ds1.Name} or {accountSummary.Name}
228
+ ```
229
+
230
+ ### Load Order and Dependencies
231
+
232
+ - Data sources load in parallel by default
233
+ - If Data Source 2 depends on a value from Data Source 1, configure the dependency order
234
+ - Use conditional rendering to hide sections until their data source has loaded
235
+ - Display a loading indicator while data sources are in progress
236
+
237
+ ### Coordinating Multiple Sources
238
+
239
+ | Pattern | Description | Use Case |
240
+ |---------|-------------|----------|
241
+ | **Parallel load** | All sources fetch simultaneously | Independent data sets |
242
+ | **Sequential load** | Source B waits for Source A | Source B needs a value from Source A's response |
243
+ | **Conditional load** | Source B only loads if Source A meets a condition | Avoid unnecessary API calls |
244
+
245
+ ---
246
+
247
+ ## Error Handling for Failed Data Sources
248
+
249
+ ### Common Failure Modes
250
+
251
+ | Failure | Cause | User Impact |
252
+ |---------|-------|------------|
253
+ | IP not found | IP name misspelled or IP not deployed | Card shows no data; console error |
254
+ | IP inactive | IP exists but is not activated | Card shows no data |
255
+ | IP timeout | IP takes too long to execute | Card shows loading indefinitely |
256
+ | IP error response | IP logic throws an exception | Card may show partial data or error state |
257
+ | Auth failure | User lacks permission to run the IP | Card shows no data; access error |
258
+ | Network error | Connectivity issue between client and server | Card shows no data |
259
+
260
+ ### Error State Design
261
+
262
+ Configure an explicit error state rather than letting the card fail silently:
263
+
264
+ ```
265
+ ┌──────────────────────────────────┐
266
+ │ ⚠ Unable to load account data │
267
+ │ │
268
+ │ The data source returned an │
269
+ │ error. Try refreshing the page. │
270
+ │ │
271
+ │ [Refresh] [Contact Support] │
272
+ └──────────────────────────────────┘
273
+ ```
274
+
275
+ **Error State Guidelines:**
276
+ - Use plain language, not technical error codes
277
+ - Provide an actionable next step (refresh, retry, contact admin)
278
+ - Log the technical error details for debugging (not displayed to end users)
279
+ - Do not show a blank card with no explanation
280
+
281
+ ### Fallback Strategies
282
+
283
+ | Strategy | Implementation | When to Use |
284
+ |----------|---------------|-------------|
285
+ | **Cached data** | Show previously loaded data with a "stale" indicator | Data changes infrequently |
286
+ | **Partial render** | Show fields that loaded; hide failed sections | Multi-source card where only one source fails |
287
+ | **Empty state** | Show "No data available" with context | Single-source card where the source fails |
288
+ | **Retry** | Provide a manual retry button | Transient errors (network, timeout) |
289
+
290
+ ### Debugging Data Source Issues
291
+
292
+ 1. **Check IP activation**: Query `SELECT Name, IsActive FROM OmniProcess WHERE Name = 'Type_SubType'`
293
+ 2. **Verify IP input**: Use the OmniStudio Preview tool to test the IP with the same input parameters
294
+ 3. **Check field paths**: Ensure merge field paths (`{field.subfield}`) match the actual IP response structure
295
+ 4. **Review permissions**: Confirm the running user has access to the IP and the underlying objects
296
+ 5. **Inspect browser console**: FlexCard data source errors appear in the browser developer console
297
+ 6. **Test with static data**: Temporarily configure the FlexCard with a static JSON data source to isolate whether the issue is the IP or the card
298
+
299
+ ### Data Source Validation Checklist
300
+
301
+ Before deploying a FlexCard, verify each data source:
302
+
303
+ - [ ] IP exists in the target org
304
+ - [ ] IP is activated
305
+ - [ ] IP Type and SubType match the `ipMethod` value exactly (case-sensitive)
306
+ - [ ] Input parameters use correct merge field syntax
307
+ - [ ] `resultListPath` points to the correct array node (for list cards)
308
+ - [ ] All merge fields in the card map to actual fields in the IP response
309
+ - [ ] Error state is configured for graceful failure
310
+ - [ ] Empty state is configured for zero-record responses
311
+ - [ ] Data source has been tested with real data in a sandbox
@@ -0,0 +1,66 @@
1
+ # FlexCard Scoring Rubric: Breakdown Detail
2
+
3
+ Detailed point-by-point scoring criteria for the 130-point FlexCard validation. Read during Phase 3 when running the full scoring rubric.
4
+
5
+ ## Design & Layout (25 points)
6
+
7
+ | Criterion | Points | Description |
8
+ |-----------|--------|-------------|
9
+ | Layout type matches use case | 5 | Single, list, tabbed, or flyout chosen appropriately |
10
+ | Field grouping is logical | 5 | Related fields are visually grouped together |
11
+ | Responsive behavior | 5 | Card adapts to different viewport widths |
12
+ | Consistent spacing | 5 | Margins and padding follow SLDS (Salesforce Lightning Design System) spacing scale |
13
+ | Visual hierarchy | 5 | Primary information is prominent, secondary is de-emphasized |
14
+
15
+ ## Data Binding (20 points)
16
+
17
+ | Criterion | Points | Description |
18
+ |-----------|--------|-------------|
19
+ | IP references are valid | 5 | All referenced IPs exist and are active |
20
+ | Merge field syntax correct | 5 | `{datasource.field}` paths resolve to actual IP response fields |
21
+ | Input parameters mapped | 5 | Record context passed correctly to IP inputs |
22
+ | Multi-source coordination | 5 | Multiple data sources load in correct order without conflicts |
23
+
24
+ ## Actions & Navigation (20 points)
25
+
26
+ | Criterion | Points | Description |
27
+ |-----------|--------|-------------|
28
+ | Action buttons functional | 5 | All buttons trigger their configured actions |
29
+ | OmniScript params mapped | 5 | Context data flows correctly into launched OmniScripts |
30
+ | Navigation targets valid | 5 | Record and URL navigation resolves correctly |
31
+ | Labels are descriptive | 5 | Action labels clearly communicate what the action does |
32
+
33
+ ## Styling (20 points)
34
+
35
+ | Criterion | Points | Description |
36
+ |-----------|--------|-------------|
37
+ | SLDS tokens used | 5 | Colors, fonts, spacing via design tokens |
38
+ | Consistent typography | 5 | Text sizes follow SLDS type scale |
39
+ | Card pattern compliance | 5 | Uses standard SLDS card or tile patterns |
40
+ | Dark mode compatible | 5 | No hardcoded colors; works with SLDS dark theme |
41
+
42
+ ## Accessibility (15 points)
43
+
44
+ | Criterion | Points | Description |
45
+ |-----------|--------|-------------|
46
+ | ARIA labels on interactive elements | 5 | Buttons, links, and inputs have accessible names |
47
+ | Keyboard navigable | 5 | All actions reachable via Tab, activated via Enter/Space |
48
+ | Color contrast sufficient | 5 | Meets WCAG 2.1 AA contrast ratio (4.5:1 for text) |
49
+
50
+ ## Testing (15 points)
51
+
52
+ | Criterion | Points | Description |
53
+ |-----------|--------|-------------|
54
+ | Populated data verified | 3 | Card renders correctly with full data |
55
+ | Empty state verified | 3 | Empty-state message displays properly |
56
+ | Error state verified | 3 | Graceful handling of IP errors |
57
+ | Multi-record verified | 3 | Card list renders correct items |
58
+ | Mobile viewport verified | 3 | Layout adapts to small screens |
59
+
60
+ ## Performance (15 points)
61
+
62
+ | Criterion | Points | Description |
63
+ |-----------|--------|-------------|
64
+ | Data source calls minimized | 5 | No redundant or duplicate IP invocations |
65
+ | Child card nesting limited | 5 | Maximum 2 levels of nested child cards |
66
+ | Lazy loading for hidden states | 5 | Non-visible tabs/flyouts load on demand |
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bash
2
+ # FlexCard CLI Commands
3
+ # Replace <org> with your org alias and <Name> with the FlexCard API name.
4
+
5
+ # Query active FlexCards in the org
6
+ sf data query -q "SELECT Id,Name,DataSourceConfig,PropertySetConfig,IsActive FROM OmniUiCard WHERE IsActive=true LIMIT 200" -o <org>
7
+
8
+ # Retrieve a specific FlexCard by name
9
+ sf project retrieve start -m OmniUiCard:<Name> -o <org>
10
+
11
+ # Deploy a FlexCard to the target org
12
+ sf project deploy start -m OmniUiCard:<Name> -o <org>
13
+
14
+ # Retrieve all FlexCards
15
+ sf project retrieve start -m OmniUiCard -o <org>
16
+
17
+ # Deploy all OmniStudio metadata (FlexCards + dependencies)
18
+ sf project deploy start -m OmniUiCard -m OmniIntegrationProcedure -m OmniScript -o <org>
19
+
20
+ # Check deploy status (use job ID from deploy output)
21
+ sf project deploy report --job-id <jobId> -o <org>
22
+
23
+ # In namespaced orgs (managed package), prefix the metadata type:
24
+ # sf project deploy start -m omnistudio__OmniUiCard:<Name> -o <org>