@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,98 @@
1
+ <!-- Parent: handling-sf-data/SKILL.md -->
2
+ # Anonymous Apex Guide
3
+
4
+ Using anonymous Apex for complex data operations.
5
+
6
+ ## When to Use Anonymous Apex
7
+
8
+ - Complex data setup requiring Apex logic
9
+ - Testing triggers with specific data patterns
10
+ - One-time data migrations
11
+ - Debugging and troubleshooting
12
+
13
+ ## sf CLI Execution
14
+
15
+ ### From File
16
+ ```bash
17
+ sf apex run --file setup-data.apex --target-org myorg
18
+ ```
19
+
20
+ ### Interactive
21
+ ```bash
22
+ sf apex run --target-org myorg
23
+ # Then type Apex code and press Ctrl+D
24
+ ```
25
+
26
+ ## Common Patterns
27
+
28
+ ### Bulk Data Creation
29
+ ```apex
30
+ List<Account> accounts = new List<Account>();
31
+ for (Integer i = 0; i < 500; i++) {
32
+ accounts.add(new Account(
33
+ Name = 'Test Account ' + i,
34
+ Industry = 'Technology'
35
+ ));
36
+ }
37
+ insert accounts;
38
+ System.debug('Created ' + accounts.size() + ' accounts');
39
+ ```
40
+
41
+ ### Data Transformation
42
+ ```apex
43
+ List<Account> accounts = [
44
+ SELECT Id, Name, Industry
45
+ FROM Account
46
+ WHERE Name LIKE 'Old%'
47
+ ];
48
+
49
+ for (Account acc : accounts) {
50
+ acc.Name = acc.Name.replace('Old', 'New');
51
+ }
52
+
53
+ update accounts;
54
+ ```
55
+
56
+ ### Testing Trigger Logic
57
+ ```apex
58
+ // Setup test data
59
+ Account acc = new Account(Name = 'Trigger Test');
60
+ insert acc;
61
+
62
+ // Force trigger to fire
63
+ acc.Industry = 'Technology';
64
+ update acc;
65
+
66
+ // Verify results
67
+ acc = [SELECT Id, Field__c FROM Account WHERE Id = :acc.Id];
68
+ System.debug('Result: ' + acc.Field__c);
69
+ ```
70
+
71
+ ## Error Handling
72
+
73
+ ```apex
74
+ try {
75
+ insert accounts;
76
+ } catch (DmlException e) {
77
+ System.debug('Error: ' + e.getMessage());
78
+ for (Integer i = 0; i < e.getNumDml(); i++) {
79
+ System.debug('Row ' + e.getDmlIndex(i) + ': ' + e.getDmlMessage(i));
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## Limits in Anonymous Apex
85
+
86
+ | Limit | Value |
87
+ |-------|-------|
88
+ | SOQL Queries | 100 |
89
+ | DML Rows | 10,000 |
90
+ | CPU Time | 10,000 ms |
91
+ | Heap Size | 6 MB |
92
+
93
+ ## Best Practices
94
+
95
+ 1. **Test in sandbox first** - Validate before production
96
+ 2. **Add debug statements** - Track progress
97
+ 3. **Handle errors gracefully** - Use try/catch
98
+ 4. **Keep scripts idempotent** - Safe to re-run
@@ -0,0 +1,94 @@
1
+ <!-- Parent: handling-sf-data/SKILL.md -->
2
+ # Bulk Operations Guide
3
+
4
+ When and how to use Salesforce Bulk API operations.
5
+
6
+ ## Decision Matrix
7
+
8
+ | Record Count | Recommended API | Command |
9
+ |--------------|-----------------|---------|
10
+ | 1-10 | Single Record | `sf data create record` |
11
+ | 11-2000 | Standard API | `sf data query` + Apex |
12
+ | 2000-10M | Bulk API 2.0 | `sf data import bulk` |
13
+ | 10M+ | Data Loader | External tool |
14
+
15
+ ## Bulk API 2.0 Commands
16
+
17
+ ### Import (Insert)
18
+ ```bash
19
+ sf data import bulk \
20
+ --file accounts.csv \
21
+ --sobject Account \
22
+ --target-org myorg \
23
+ --wait 30
24
+ ```
25
+
26
+ ### Update
27
+ ```bash
28
+ sf data update bulk \
29
+ --file updates.csv \
30
+ --sobject Account \
31
+ --target-org myorg \
32
+ --wait 30
33
+ ```
34
+
35
+ ### Upsert (Insert or Update)
36
+ ```bash
37
+ sf data upsert bulk \
38
+ --file upsert.csv \
39
+ --sobject Account \
40
+ --external-id External_Id__c \
41
+ --target-org myorg \
42
+ --wait 30
43
+ ```
44
+
45
+ ### Delete
46
+ ```bash
47
+ sf data delete bulk \
48
+ --file delete.csv \
49
+ --sobject Account \
50
+ --target-org myorg \
51
+ --wait 30
52
+ ```
53
+
54
+ ### Export
55
+ ```bash
56
+ sf data export bulk \
57
+ --query "SELECT Id, Name FROM Account" \
58
+ --output-file accounts.csv \
59
+ --target-org myorg \
60
+ --wait 30
61
+ ```
62
+
63
+ ## CSV Format Requirements
64
+
65
+ - First row: Field API names
66
+ - UTF-8 encoding
67
+ - Comma delimiter (default)
68
+ - Max 100MB per file
69
+
70
+ ## Bulk API Limits
71
+
72
+ | Limit | Value |
73
+ |-------|-------|
74
+ | Batches per 24 hours | 10,000 |
75
+ | Records per 24 hours | 10,000,000 |
76
+ | Max file size | 100 MB |
77
+ | Max concurrent jobs | 100 |
78
+
79
+ ## Error Handling
80
+
81
+ ```bash
82
+ # Check job status
83
+ sf data resume --job-id [job-id] --target-org myorg
84
+
85
+ # Get results
86
+ sf data bulk results --job-id [job-id] --target-org myorg
87
+ ```
88
+
89
+ ## Best Practices
90
+
91
+ 1. **Chunk large files** - Split files >100MB
92
+ 2. **Use --wait** - Monitor completion
93
+ 3. **Handle partial failures** - Check result files
94
+ 4. **Test in sandbox** - Validate before production
@@ -0,0 +1,194 @@
1
+ <!-- Parent: handling-sf-data/SKILL.md -->
2
+ # Bulk Testing Example
3
+
4
+ Testing Apex triggers and flows with bulk data operations.
5
+
6
+ ## Scenario
7
+
8
+ Test an Account trigger that:
9
+ - Fires on insert with 200+ records
10
+ - Updates a custom field based on Industry
11
+ - Creates a related Task for high-value accounts
12
+
13
+ ## Why 201 Records?
14
+
15
+ Salesforce processes triggers in batches of 200. Testing with 201+ records ensures:
16
+ - Trigger handles batch boundaries
17
+ - No governor limit violations in loops
18
+ - SOQL/DML operations are bulkified
19
+
20
+ ## Method 1: Anonymous Apex Factory
21
+
22
+ ### Create Test Data
23
+ ```apex
24
+ // Create 251 Accounts to test trigger bulkification
25
+ List<Account> accounts = new List<Account>();
26
+
27
+ List<String> industries = new List<String>{
28
+ 'Technology', 'Healthcare', 'Finance', 'Manufacturing', 'Retail'
29
+ };
30
+
31
+ for (Integer i = 0; i < 251; i++) {
32
+ accounts.add(new Account(
33
+ Name = 'BulkTest Account ' + i,
34
+ Industry = industries[Math.mod(i, industries.size())],
35
+ AnnualRevenue = Math.round(Math.random() * 10000000)
36
+ ));
37
+ }
38
+
39
+ // Single DML - triggers fire in batches of 200
40
+ insert accounts;
41
+
42
+ System.debug('Created ' + accounts.size() + ' accounts');
43
+ System.debug('SOQL Queries Used: ' + Limits.getQueries() + '/' + Limits.getLimitQueries());
44
+ System.debug('DML Statements: ' + Limits.getDmlStatements() + '/' + Limits.getLimitDmlStatements());
45
+ ```
46
+
47
+ Save as `bulk-test-accounts.apex` and run:
48
+ ```bash
49
+ sf apex run --file bulk-test-accounts.apex --target-org dev
50
+ ```
51
+
52
+ ## Method 2: CSV Bulk Import
53
+
54
+ ### Create CSV File
55
+ ```csv
56
+ Name,Industry,AnnualRevenue
57
+ BulkTest Account 1,Technology,1000000
58
+ BulkTest Account 2,Healthcare,2000000
59
+ BulkTest Account 3,Finance,5000000
60
+ ... (251 rows)
61
+ ```
62
+
63
+ ### Import via sf CLI
64
+ ```bash
65
+ sf data import bulk \
66
+ --file accounts-bulk.csv \
67
+ --sobject Account \
68
+ --target-org dev \
69
+ --wait 30
70
+ ```
71
+
72
+ ## Method 3: JSON Tree Import
73
+
74
+ For hierarchical test data with relationships:
75
+
76
+ ```json
77
+ {
78
+ "records": [
79
+ {
80
+ "attributes": {"type": "Account", "referenceId": "AccountRef1"},
81
+ "Name": "BulkTest Parent 1",
82
+ "Industry": "Technology",
83
+ "Contacts": {
84
+ "records": [
85
+ {
86
+ "attributes": {"type": "Contact"},
87
+ "FirstName": "Test",
88
+ "LastName": "Contact 1"
89
+ }
90
+ ]
91
+ }
92
+ }
93
+ ]
94
+ }
95
+ ```
96
+
97
+ ```bash
98
+ sf data import tree \
99
+ --files bulk-hierarchy.json \
100
+ --target-org dev
101
+ ```
102
+
103
+ ## Verify Trigger Executed Correctly
104
+
105
+ ### Check Trigger Results
106
+ ```bash
107
+ sf data query \
108
+ --query "SELECT Id, Name, Industry, Custom_Field__c FROM Account WHERE Name LIKE 'BulkTest%' LIMIT 10" \
109
+ --target-org dev \
110
+ --json
111
+ ```
112
+
113
+ ### Check Related Tasks Created
114
+ ```bash
115
+ sf data query \
116
+ --query "SELECT Id, Subject, WhatId, What.Name FROM Task WHERE What.Name LIKE 'BulkTest%'" \
117
+ --target-org dev
118
+ ```
119
+
120
+ ### Count Records
121
+ ```bash
122
+ sf data query \
123
+ --query "SELECT COUNT(Id) total FROM Account WHERE Name LIKE 'BulkTest%'" \
124
+ --target-org dev
125
+ ```
126
+
127
+ ## Test Bulk Update
128
+
129
+ ```apex
130
+ // Update all test records - triggers fire again
131
+ List<Account> accounts = [
132
+ SELECT Id, Name, Industry
133
+ FROM Account
134
+ WHERE Name LIKE 'BulkTest%'
135
+ ];
136
+
137
+ for (Account acc : accounts) {
138
+ acc.Description = 'Bulk updated on ' + DateTime.now();
139
+ }
140
+
141
+ update accounts;
142
+
143
+ System.debug('Updated ' + accounts.size() + ' accounts');
144
+ ```
145
+
146
+ ## Test Bulk Delete
147
+
148
+ ```apex
149
+ // Delete in reverse order (children first)
150
+ List<Task> tasks = [SELECT Id FROM Task WHERE What.Name LIKE 'BulkTest%'];
151
+ delete tasks;
152
+
153
+ List<Contact> contacts = [SELECT Id FROM Contact WHERE Account.Name LIKE 'BulkTest%'];
154
+ delete contacts;
155
+
156
+ List<Account> accounts = [SELECT Id FROM Account WHERE Name LIKE 'BulkTest%'];
157
+ delete accounts;
158
+
159
+ System.debug('Cleanup complete');
160
+ ```
161
+
162
+ ## Governor Limits Monitoring
163
+
164
+ ```apex
165
+ // Add to your test script to monitor limits
166
+ System.debug('=== GOVERNOR LIMITS ===');
167
+ System.debug('SOQL: ' + Limits.getQueries() + '/' + Limits.getLimitQueries());
168
+ System.debug('DML Statements: ' + Limits.getDmlStatements() + '/' + Limits.getLimitDmlStatements());
169
+ System.debug('DML Rows: ' + Limits.getDmlRows() + '/' + Limits.getLimitDmlRows());
170
+ System.debug('CPU Time: ' + Limits.getCpuTime() + 'ms/' + Limits.getLimitCpuTime() + 'ms');
171
+ System.debug('Heap: ' + Limits.getHeapSize() + '/' + Limits.getLimitHeapSize());
172
+ ```
173
+
174
+ ## Validation Score
175
+
176
+ ```
177
+ Score: 128/130 ⭐⭐⭐⭐⭐ Excellent
178
+ ├─ Query Efficiency: 25/25 (bulk queries)
179
+ ├─ Bulk Safety: 25/25 (251 records, limits monitored)
180
+ ├─ Data Integrity: 20/20 (valid field values)
181
+ ├─ Security & FLS: 20/20 (no sensitive data)
182
+ ├─ Test Patterns: 15/15 (201+ records, variations)
183
+ ├─ Cleanup & Isolation: 13/15 (cleanup script provided)
184
+ └─ Documentation: 10/10 (fully documented)
185
+ ```
186
+
187
+ ## Common Issues
188
+
189
+ | Issue | Cause | Solution |
190
+ |-------|-------|----------|
191
+ | `SOQL 101` | Query in loop | Use Map or Set for bulk queries |
192
+ | `DML 151` | DML in loop | Collect records, single DML |
193
+ | `CPU timeout` | Complex logic | Optimize loops, async processing |
194
+ | `Too many records` | >10,000 DML rows | Use Bulk API or Batch Apex |
@@ -0,0 +1,322 @@
1
+ <!-- Parent: handling-sf-data/SKILL.md -->
2
+ # Cleanup and Rollback Examples
3
+
4
+ Strategies for test data isolation and proper cleanup.
5
+
6
+ ## Method 1: Savepoint/Rollback
7
+
8
+ Best for synchronous operations in a single transaction.
9
+
10
+ ### Basic Pattern
11
+ ```apex
12
+ // Create savepoint BEFORE any DML
13
+ Savepoint sp = Database.setSavepoint();
14
+
15
+ try {
16
+ // Create test data
17
+ Account acc = new Account(Name = 'Test Account');
18
+ insert acc;
19
+
20
+ Contact con = new Contact(
21
+ FirstName = 'Test',
22
+ LastName = 'Contact',
23
+ AccountId = acc.Id
24
+ );
25
+ insert con;
26
+
27
+ // Perform operations
28
+ MyClass.processAccount(acc);
29
+
30
+ // Assert results
31
+ acc = [SELECT Custom_Field__c FROM Account WHERE Id = :acc.Id];
32
+ System.assert(acc.Custom_Field__c != null, 'Field should be populated');
33
+
34
+ } finally {
35
+ // ALWAYS rollback - even on success
36
+ Database.rollback(sp);
37
+ }
38
+
39
+ // Data is now completely removed
40
+ ```
41
+
42
+ ### In Unit Tests
43
+ ```apex
44
+ @isTest
45
+ static void testWithRollback() {
46
+ Savepoint sp = Database.setSavepoint();
47
+
48
+ try {
49
+ // Create 1000 test records
50
+ List<Account> accounts = new List<Account>();
51
+ for (Integer i = 0; i < 1000; i++) {
52
+ accounts.add(new Account(Name = 'Rollback Test ' + i));
53
+ }
54
+ insert accounts;
55
+
56
+ // Run business logic
57
+ Test.startTest();
58
+ BatchProcessor.process(accounts);
59
+ Test.stopTest();
60
+
61
+ // Assertions
62
+ Integer count = [SELECT COUNT() FROM Account WHERE Name LIKE 'Rollback Test%'];
63
+ System.assertEquals(1000, count);
64
+
65
+ } finally {
66
+ Database.rollback(sp);
67
+ }
68
+
69
+ // Verify cleanup
70
+ Integer remaining = [SELECT COUNT() FROM Account WHERE Name LIKE 'Rollback Test%'];
71
+ System.assertEquals(0, remaining, 'All records should be rolled back');
72
+ }
73
+ ```
74
+
75
+ ### Limitations
76
+ - **Does NOT rollback async operations** (future, queueable, batch)
77
+ - Maximum 5 savepoints per transaction
78
+ - Cannot rollback across transaction boundaries
79
+
80
+ ## Method 2: Cleanup by Name Pattern
81
+
82
+ Best when savepoint isn't possible (async tests, multi-transaction).
83
+
84
+ ### Single Object Cleanup
85
+ ```apex
86
+ // Delete all test accounts
87
+ List<Account> toDelete = [
88
+ SELECT Id FROM Account
89
+ WHERE Name LIKE 'Test%'
90
+ LIMIT 10000
91
+ ];
92
+ delete toDelete;
93
+ ```
94
+
95
+ ### Multi-Object Cleanup (Correct Order)
96
+ ```apex
97
+ // CRITICAL: Delete children before parents!
98
+ String testPattern = 'Test%';
99
+
100
+ // 1. Delete grandchildren first
101
+ delete [SELECT Id FROM Task WHERE What.Name LIKE :testPattern];
102
+ delete [SELECT Id FROM Event WHERE What.Name LIKE :testPattern];
103
+
104
+ // 2. Delete children
105
+ delete [SELECT Id FROM Opportunity WHERE Account.Name LIKE :testPattern];
106
+ delete [SELECT Id FROM Contact WHERE Account.Name LIKE :testPattern];
107
+ delete [SELECT Id FROM Case WHERE Account.Name LIKE :testPattern];
108
+
109
+ // 3. Delete parents last
110
+ delete [SELECT Id FROM Account WHERE Name LIKE :testPattern];
111
+
112
+ System.debug('Cleanup complete');
113
+ ```
114
+
115
+ ### sf CLI Cleanup
116
+ ```bash
117
+ # Query records to delete
118
+ sf data query \
119
+ --query "SELECT Id FROM Account WHERE Name LIKE 'Test%'" \
120
+ --target-org dev \
121
+ --result-format csv \
122
+ > delete-accounts.csv
123
+
124
+ # Bulk delete
125
+ sf data delete bulk \
126
+ --file delete-accounts.csv \
127
+ --sobject Account \
128
+ --target-org dev \
129
+ --wait 30
130
+ ```
131
+
132
+ ## Method 3: Cleanup by Time Window
133
+
134
+ Best for cleaning up after a specific test run.
135
+
136
+ ### By CreatedDate
137
+ ```apex
138
+ // Clean up records created in the last hour
139
+ DateTime startTime = DateTime.now().addHours(-1);
140
+ String testPattern = 'Test%';
141
+
142
+ delete [
143
+ SELECT Id FROM Account
144
+ WHERE CreatedDate >= :startTime
145
+ AND Name LIKE :testPattern
146
+ ];
147
+ ```
148
+
149
+ ### With Timestamp Tracking
150
+ ```apex
151
+ // At start of test - capture timestamp
152
+ DateTime testStartTime = DateTime.now();
153
+
154
+ // ... run tests ...
155
+
156
+ // Cleanup - only records created during this test
157
+ delete [
158
+ SELECT Id FROM Account
159
+ WHERE CreatedDate >= :testStartTime
160
+ AND Name LIKE 'Test%'
161
+ ];
162
+ ```
163
+
164
+ ## Method 4: ID-Based Cleanup
165
+
166
+ Most precise - track exactly what you created.
167
+
168
+ ### Track IDs During Creation
169
+ ```apex
170
+ // Collection to track all created record IDs
171
+ Set<Id> createdAccountIds = new Set<Id>();
172
+ Set<Id> createdContactIds = new Set<Id>();
173
+ Set<Id> createdOppIds = new Set<Id>();
174
+
175
+ // Create and track
176
+ List<Account> accounts = TestDataFactory_Account.create(100);
177
+ createdAccountIds.addAll(new Map<Id, Account>(accounts).keySet());
178
+
179
+ List<Contact> contacts = TestDataFactory_Contact.createForAccounts(createdAccountIds, 3);
180
+ createdContactIds.addAll(new Map<Id, Contact>(contacts).keySet());
181
+
182
+ // ... run tests ...
183
+
184
+ // Cleanup exactly what we created
185
+ delete [SELECT Id FROM Contact WHERE Id IN :createdContactIds];
186
+ delete [SELECT Id FROM Account WHERE Id IN :createdAccountIds];
187
+ ```
188
+
189
+ ### Wrapper Class for Tracking
190
+ ```apex
191
+ public class TestDataTracker {
192
+ private Map<String, Set<Id>> trackedIds = new Map<String, Set<Id>>();
193
+
194
+ public void track(SObject record) {
195
+ String objType = record.getSObjectType().getDescribe().getName();
196
+ if (!trackedIds.containsKey(objType)) {
197
+ trackedIds.put(objType, new Set<Id>());
198
+ }
199
+ trackedIds.get(objType).add(record.Id);
200
+ }
201
+
202
+ public void trackAll(List<SObject> records) {
203
+ for (SObject rec : records) {
204
+ track(rec);
205
+ }
206
+ }
207
+
208
+ public void cleanup() {
209
+ // Delete in reverse dependency order
210
+ List<String> deleteOrder = new List<String>{
211
+ 'Task', 'Event', 'Opportunity', 'Contact', 'Case', 'Account'
212
+ };
213
+
214
+ for (String objType : deleteOrder) {
215
+ if (trackedIds.containsKey(objType)) {
216
+ Set<Id> ids = trackedIds.get(objType);
217
+ String query = 'SELECT Id FROM ' + objType + ' WHERE Id IN :ids';
218
+ delete Database.query(query);
219
+ }
220
+ }
221
+ }
222
+ }
223
+
224
+ // Usage
225
+ TestDataTracker tracker = new TestDataTracker();
226
+
227
+ List<Account> accounts = TestDataFactory_Account.create(100);
228
+ tracker.trackAll(accounts);
229
+
230
+ List<Contact> contacts = TestDataFactory_Contact.create(50);
231
+ tracker.trackAll(contacts);
232
+
233
+ // ... run tests ...
234
+
235
+ // Clean up everything tracked
236
+ tracker.cleanup();
237
+ ```
238
+
239
+ ## Method 5: @testSetup Isolation
240
+
241
+ Automatic rollback with @isTest annotation.
242
+
243
+ ```apex
244
+ @isTest
245
+ public class MyTestClass {
246
+
247
+ @testSetup
248
+ static void setup() {
249
+ // This data is automatically rolled back after ALL tests complete
250
+ List<Account> accounts = TestDataFactory_Account.create(100);
251
+ }
252
+
253
+ @isTest
254
+ static void testMethod1() {
255
+ // Access setup data
256
+ List<Account> accounts = [SELECT Id FROM Account];
257
+ // Modify data - changes rolled back after this test
258
+ delete accounts[0];
259
+ }
260
+
261
+ @isTest
262
+ static void testMethod2() {
263
+ // Fresh copy of @testSetup data - all 100 accounts available
264
+ List<Account> accounts = [SELECT Id FROM Account];
265
+ System.assertEquals(100, accounts.size());
266
+ }
267
+ }
268
+ ```
269
+
270
+ ## Cleanup via sf CLI
271
+
272
+ ### Generate Cleanup CSV
273
+ ```bash
274
+ # Export IDs of test records
275
+ sf data query \
276
+ --query "SELECT Id FROM Account WHERE Name LIKE 'Test%'" \
277
+ --target-org dev \
278
+ --result-format csv \
279
+ > cleanup-accounts.csv
280
+
281
+ sf data query \
282
+ --query "SELECT Id FROM Contact WHERE Account.Name LIKE 'Test%'" \
283
+ --target-org dev \
284
+ --result-format csv \
285
+ > cleanup-contacts.csv
286
+ ```
287
+
288
+ ### Execute Bulk Delete
289
+ ```bash
290
+ # Delete children first
291
+ sf data delete bulk \
292
+ --file cleanup-contacts.csv \
293
+ --sobject Contact \
294
+ --target-org dev \
295
+ --wait 30
296
+
297
+ # Then delete parents
298
+ sf data delete bulk \
299
+ --file cleanup-accounts.csv \
300
+ --sobject Account \
301
+ --target-org dev \
302
+ --wait 30
303
+ ```
304
+
305
+ ## Best Practices Summary
306
+
307
+ | Method | Best For | Limitations |
308
+ |--------|----------|-------------|
309
+ | Savepoint/Rollback | Synchronous tests | No async, max 5 savepoints |
310
+ | Name Pattern | Ad-hoc cleanup | May delete unintended records |
311
+ | Time Window | Post-test cleanup | Needs accurate timestamp |
312
+ | ID Tracking | Precise cleanup | Requires tracking discipline |
313
+ | @testSetup | Unit tests | Only in @isTest classes |
314
+ | sf CLI Bulk | Large volumes | External tool required |
315
+
316
+ ## Golden Rules
317
+
318
+ 1. **Always delete children before parents** - Respect relationships
319
+ 2. **Use specific patterns** - 'Test%', 'BulkTest%' to avoid accidents
320
+ 3. **Verify before delete** - Query first to see what will be deleted
321
+ 4. **Test cleanup in sandbox** - Never run unverified cleanup in prod
322
+ 5. **Track created IDs** - Most reliable cleanup method