@salesforce/afv-skills 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/package.json +1 -1
  2. package/skills/activating-datacloud/CREDITS.md +5 -0
  3. package/skills/activating-datacloud/README.md +39 -0
  4. package/skills/activating-datacloud/SKILL.md +118 -0
  5. package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
  6. package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
  7. package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
  8. package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
  9. package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
  10. package/skills/building-omnistudio-callable-apex/README.md +80 -0
  11. package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
  12. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
  13. package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
  14. package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
  15. package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
  16. package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
  17. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
  18. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
  19. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
  20. package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
  21. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
  22. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
  23. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
  24. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
  25. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
  26. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
  27. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
  28. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
  29. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
  30. package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
  31. package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
  32. package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
  33. package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
  34. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
  35. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
  36. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
  37. package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
  38. package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
  39. package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
  40. package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
  41. package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
  42. package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
  43. package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
  44. package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
  45. package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
  46. package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
  47. package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
  48. package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
  49. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
  50. package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
  51. package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
  52. package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
  53. package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
  54. package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
  55. package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
  56. package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
  57. package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
  58. package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
  59. package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
  60. package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
  61. package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
  62. package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
  63. package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
  64. package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
  65. package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
  66. package/skills/building-sf-integrations/CREDITS.md +5 -0
  67. package/skills/building-sf-integrations/README.md +95 -0
  68. package/skills/building-sf-integrations/SKILL.md +192 -0
  69. package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
  70. package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
  71. package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
  72. package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
  73. package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
  74. package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
  75. package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
  76. package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
  77. package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
  78. package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
  79. package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
  80. package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
  81. package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
  82. package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
  83. package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
  84. package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
  85. package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
  86. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
  87. package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
  88. package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
  89. package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
  90. package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
  91. package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
  92. package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
  93. package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
  94. package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
  95. package/skills/building-sf-integrations/references/cli-reference.md +94 -0
  96. package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
  97. package/skills/building-sf-integrations/references/event-patterns.md +838 -0
  98. package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
  99. package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
  100. package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
  101. package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
  102. package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
  103. package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
  104. package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
  105. package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
  106. package/skills/building-sf-integrations/scripts/README.md +100 -0
  107. package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
  108. package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
  109. package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
  110. package/skills/configuring-connected-apps/CREDITS.md +3 -0
  111. package/skills/configuring-connected-apps/README.md +99 -0
  112. package/skills/configuring-connected-apps/SKILL.md +224 -0
  113. package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
  114. package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
  115. package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
  116. package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
  117. package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
  118. package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
  119. package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
  120. package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
  121. package/skills/configuring-connected-apps/references/example-usage.md +256 -0
  122. package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
  123. package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
  124. package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
  125. package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
  126. package/skills/connecting-datacloud/CREDITS.md +5 -0
  127. package/skills/connecting-datacloud/README.md +59 -0
  128. package/skills/connecting-datacloud/SKILL.md +155 -0
  129. package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
  130. package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
  131. package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
  132. package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
  133. package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
  134. package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
  135. package/skills/debugging-apex-logs/CREDITS.md +22 -0
  136. package/skills/debugging-apex-logs/README.md +74 -0
  137. package/skills/debugging-apex-logs/SKILL.md +172 -0
  138. package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
  139. package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
  140. package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
  141. package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
  142. package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
  143. package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
  144. package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
  145. package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
  146. package/skills/debugging-apex-logs/references/common-issues.md +68 -0
  147. package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
  148. package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
  149. package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
  150. package/skills/deploying-metadata/CREDITS.md +25 -0
  151. package/skills/deploying-metadata/README.md +104 -0
  152. package/skills/deploying-metadata/SKILL.md +214 -0
  153. package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
  154. package/skills/deploying-metadata/assets/package.xml +121 -0
  155. package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
  156. package/skills/deploying-metadata/references/deploy.sh +73 -0
  157. package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
  158. package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
  159. package/skills/deploying-metadata/references/orchestration.md +183 -0
  160. package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
  161. package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
  162. package/skills/deploying-omnistudio-datapacks/README.md +88 -0
  163. package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
  164. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
  165. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
  166. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
  167. package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
  168. package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
  169. package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
  170. package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
  171. package/skills/developing-agentforce/references/actions-reference.md +8 -8
  172. package/skills/fetching-salesforce-docs/README.md +66 -0
  173. package/skills/fetching-salesforce-docs/SKILL.md +209 -0
  174. package/skills/fetching-salesforce-docs/requirements.txt +2 -0
  175. package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
  176. package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
  177. package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
  178. package/skills/generating-apex/CREDITS.md +1 -26
  179. package/skills/generating-apex-test/CREDITS.md +2 -27
  180. package/skills/generating-lwc-components/CREDITS.md +5 -0
  181. package/skills/generating-lwc-components/README.md +126 -0
  182. package/skills/generating-lwc-components/SKILL.md +191 -0
  183. package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
  184. package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
  185. package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
  186. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
  187. package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
  188. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
  189. package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
  190. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
  191. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
  192. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
  193. package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
  194. package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
  195. package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
  196. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
  197. package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
  198. package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
  199. package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
  200. package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
  201. package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
  202. package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
  203. package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
  204. package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
  205. package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
  206. package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
  207. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
  208. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
  209. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
  210. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
  211. package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
  212. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
  213. package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
  214. package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
  215. package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
  216. package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
  217. package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
  218. package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
  219. package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
  220. package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
  221. package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
  222. package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
  223. package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
  224. package/skills/generating-lwc-components/references/advanced-features.md +108 -0
  225. package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
  226. package/skills/generating-lwc-components/references/cli-commands.md +545 -0
  227. package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
  228. package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
  229. package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
  230. package/skills/generating-lwc-components/references/lms-guide.md +860 -0
  231. package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
  232. package/skills/generating-lwc-components/references/performance-guide.md +861 -0
  233. package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
  234. package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
  235. package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
  236. package/skills/generating-lwc-components/references/state-management.md +642 -0
  237. package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
  238. package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
  239. package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
  240. package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
  241. package/skills/generating-mermaid-diagrams/README.md +114 -0
  242. package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
  243. package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
  244. package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
  245. package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
  246. package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
  247. package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
  248. package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
  249. package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
  250. package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
  251. package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
  252. package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
  253. package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
  254. package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
  255. package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
  256. package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
  257. package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
  258. package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
  259. package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
  260. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
  261. package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
  262. package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
  263. package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
  264. package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
  265. package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
  266. package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
  267. package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
  268. package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
  269. package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
  270. package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
  271. package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
  272. package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
  273. package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
  274. package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
  275. package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
  276. package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
  277. package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
  278. package/skills/generating-visual-diagrams/CREDITS.md +80 -0
  279. package/skills/generating-visual-diagrams/README.md +83 -0
  280. package/skills/generating-visual-diagrams/SKILL.md +208 -0
  281. package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
  282. package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
  283. package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
  284. package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
  285. package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
  286. package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
  287. package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
  288. package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
  289. package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
  290. package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
  291. package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
  292. package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
  293. package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
  294. package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
  295. package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
  296. package/skills/handling-sf-data/CREDITS.md +5 -0
  297. package/skills/handling-sf-data/README.md +112 -0
  298. package/skills/handling-sf-data/SKILL.md +235 -0
  299. package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
  300. package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
  301. package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
  302. package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
  303. package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
  304. package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
  305. package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
  306. package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
  307. package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
  308. package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
  309. package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
  310. package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
  311. package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
  312. package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
  313. package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
  314. package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
  315. package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
  316. package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
  317. package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
  318. package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
  319. package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
  320. package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
  321. package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
  322. package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
  323. package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
  324. package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
  325. package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
  326. package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
  327. package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
  328. package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
  329. package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
  330. package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
  331. package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
  332. package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
  333. package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
  334. package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
  335. package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
  336. package/skills/handling-sf-data/references/orchestration.md +174 -0
  337. package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
  338. package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
  339. package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
  340. package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
  341. package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
  342. package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
  343. package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
  344. package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
  345. package/skills/harmonizing-datacloud/CREDITS.md +3 -0
  346. package/skills/harmonizing-datacloud/README.md +31 -0
  347. package/skills/harmonizing-datacloud/SKILL.md +117 -0
  348. package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
  349. package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
  350. package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
  351. package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
  352. package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
  353. package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
  354. package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
  355. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
  356. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
  357. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
  358. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
  359. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
  360. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
  361. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
  362. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
  363. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
  364. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
  365. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
  366. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
  367. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
  368. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
  369. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
  370. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
  371. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
  372. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
  373. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
  374. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
  375. package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
  376. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
  377. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
  378. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
  379. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
  380. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
  381. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
  382. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
  383. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
  384. package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
  385. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
  386. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
  387. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
  388. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
  389. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
  390. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
  391. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
  392. package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
  393. package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
  394. package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
  395. package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
  396. package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
  397. package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
  398. package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
  399. package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
  400. package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
  401. package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
  402. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
  403. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
  404. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
  405. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
  406. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
  407. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
  408. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
  409. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
  410. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
  411. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
  412. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
  413. package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
  414. package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
  415. package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
  416. package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
  417. package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
  418. package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
  419. package/skills/orchestrating-datacloud/CREDITS.md +15 -0
  420. package/skills/orchestrating-datacloud/README.md +129 -0
  421. package/skills/orchestrating-datacloud/SKILL.md +236 -0
  422. package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
  423. package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
  424. package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
  425. package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
  426. package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
  427. package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
  428. package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
  429. package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
  430. package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
  431. package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
  432. package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
  433. package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
  434. package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
  435. package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
  436. package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
  437. package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
  438. package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
  439. package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
  440. package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
  441. package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
  442. package/skills/preparing-datacloud/CREDITS.md +7 -0
  443. package/skills/preparing-datacloud/README.md +51 -0
  444. package/skills/preparing-datacloud/SKILL.md +191 -0
  445. package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
  446. package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
  447. package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
  448. package/skills/querying-soql/CREDITS.md +21 -0
  449. package/skills/querying-soql/README.md +41 -0
  450. package/skills/querying-soql/SKILL.md +143 -0
  451. package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
  452. package/skills/querying-soql/assets/basic-queries.soql +188 -0
  453. package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
  454. package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
  455. package/skills/querying-soql/assets/relationship-queries.soql +203 -0
  456. package/skills/querying-soql/assets/selector-class.cls +219 -0
  457. package/skills/querying-soql/references/anti-patterns.md +348 -0
  458. package/skills/querying-soql/references/cli-commands.md +358 -0
  459. package/skills/querying-soql/references/field-coverage-rules.md +514 -0
  460. package/skills/querying-soql/references/query-optimization.md +142 -0
  461. package/skills/querying-soql/references/selector-patterns.md +479 -0
  462. package/skills/querying-soql/references/soql-reference.md +227 -0
  463. package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
  464. package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
  465. package/skills/retrieving-datacloud/CREDITS.md +7 -0
  466. package/skills/retrieving-datacloud/README.md +44 -0
  467. package/skills/retrieving-datacloud/SKILL.md +120 -0
  468. package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
  469. package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
  470. package/skills/running-apex-tests/CREDITS.md +22 -0
  471. package/skills/running-apex-tests/README.md +94 -0
  472. package/skills/running-apex-tests/SKILL.md +158 -0
  473. package/skills/running-apex-tests/assets/basic-test.cls +169 -0
  474. package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
  475. package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
  476. package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
  477. package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
  478. package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
  479. package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
  480. package/skills/running-apex-tests/references/cli-commands.md +289 -0
  481. package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
  482. package/skills/running-apex-tests/references/performance-optimization.md +283 -0
  483. package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
  484. package/skills/running-apex-tests/references/test-patterns.md +154 -0
  485. package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
  486. package/skills/segmenting-datacloud/CREDITS.md +3 -0
  487. package/skills/segmenting-datacloud/README.md +36 -0
  488. package/skills/segmenting-datacloud/SKILL.md +115 -0
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Test Data Factory for Lead records
3
+ * Supports bulk creation with status and source variations
4
+ *
5
+ * Usage:
6
+ * List<Lead> leads = TestDataFactory_Lead.create(200);
7
+ * List<Lead> openLeads = TestDataFactory_Lead.createWithStatus(100, 'Open - Not Contacted');
8
+ * List<Lead> qualifiedLeads = TestDataFactory_Lead.createQualified(50);
9
+ */
10
+ public class TestDataFactory_Lead {
11
+
12
+ private static final String DEFAULT_FIRST_NAME_PREFIX = 'Test';
13
+ private static final String DEFAULT_LAST_NAME_PREFIX = 'Lead';
14
+ private static final String DEFAULT_COMPANY_PREFIX = 'Test Company ';
15
+ private static final String DEFAULT_STATUS = 'Open - Not Contacted';
16
+ private static final String DEFAULT_EMAIL_DOMAIN = 'testlead.example.com';
17
+
18
+ /**
19
+ * Create and insert Lead records with default values
20
+ * @param count Number of records to create
21
+ * @return List of inserted Lead records with IDs
22
+ */
23
+ public static List<Lead> create(Integer count) {
24
+ return create(count, true);
25
+ }
26
+
27
+ /**
28
+ * Create Lead records with insert option
29
+ * @param count Number of records to create
30
+ * @param doInsert Whether to insert records
31
+ * @return List of Lead records
32
+ */
33
+ public static List<Lead> create(Integer count, Boolean doInsert) {
34
+ List<Lead> records = new List<Lead>();
35
+ for (Integer i = 0; i < count; i++) {
36
+ records.add(buildRecord(i));
37
+ }
38
+ if (doInsert && !records.isEmpty()) {
39
+ insert records;
40
+ }
41
+ return records;
42
+ }
43
+
44
+ /**
45
+ * Create Lead records with a specific Status
46
+ * @param count Number of records to create
47
+ * @param status Lead Status picklist value
48
+ * @return List of inserted Lead records
49
+ */
50
+ public static List<Lead> createWithStatus(Integer count, String status) {
51
+ List<Lead> records = new List<Lead>();
52
+ for (Integer i = 0; i < count; i++) {
53
+ Lead lead = buildRecord(i);
54
+ lead.Status = status;
55
+ records.add(lead);
56
+ }
57
+ if (!records.isEmpty()) {
58
+ insert records;
59
+ }
60
+ return records;
61
+ }
62
+
63
+ /**
64
+ * Create qualified Lead records (ready for conversion)
65
+ * @param count Number of records to create
66
+ * @return List of inserted qualified Lead records
67
+ */
68
+ public static List<Lead> createQualified(Integer count) {
69
+ List<Lead> records = new List<Lead>();
70
+ for (Integer i = 0; i < count; i++) {
71
+ Lead lead = buildRecord(i);
72
+ lead.Status = 'Qualified';
73
+ lead.Rating = 'Hot';
74
+ lead.NumberOfEmployees = 100;
75
+ lead.AnnualRevenue = 1000000;
76
+ records.add(lead);
77
+ }
78
+ if (!records.isEmpty()) {
79
+ insert records;
80
+ }
81
+ return records;
82
+ }
83
+
84
+ /**
85
+ * Create Leads with varied Lead Sources for attribution testing
86
+ * @param count Number of records to create
87
+ * @return List of inserted Lead records with varied sources
88
+ */
89
+ public static List<Lead> createWithVariedSources(Integer count) {
90
+ List<String> sources = new List<String>{
91
+ 'Web', 'Phone Inquiry', 'Partner Referral', 'Purchased List',
92
+ 'Other', 'Trade Show', 'Employee Referral', 'External Referral'
93
+ };
94
+
95
+ List<Lead> records = new List<Lead>();
96
+ for (Integer i = 0; i < count; i++) {
97
+ Lead lead = buildRecord(i);
98
+ lead.LeadSource = sources[Math.mod(i, sources.size())];
99
+ records.add(lead);
100
+ }
101
+
102
+ if (!records.isEmpty()) {
103
+ insert records;
104
+ }
105
+ return records;
106
+ }
107
+
108
+ /**
109
+ * Create Leads with varied Industries for segmentation testing
110
+ * @param count Number of records to create
111
+ * @return List of inserted Lead records with varied industries
112
+ */
113
+ public static List<Lead> createWithVariedIndustries(Integer count) {
114
+ List<String> industries = new List<String>{
115
+ 'Technology', 'Healthcare', 'Finance', 'Manufacturing',
116
+ 'Retail', 'Education', 'Energy', 'Media', 'Government'
117
+ };
118
+
119
+ List<Lead> records = new List<Lead>();
120
+ for (Integer i = 0; i < count; i++) {
121
+ Lead lead = buildRecord(i);
122
+ lead.Industry = industries[Math.mod(i, industries.size())];
123
+ records.add(lead);
124
+ }
125
+
126
+ if (!records.isEmpty()) {
127
+ insert records;
128
+ }
129
+ return records;
130
+ }
131
+
132
+ /**
133
+ * Build a single Lead record with default values
134
+ * @param index Record index for unique naming
135
+ * @return Lead record (not inserted)
136
+ */
137
+ private static Lead buildRecord(Integer index) {
138
+ String indexStr = String.valueOf(index).leftPad(5, '0');
139
+ String firstName = DEFAULT_FIRST_NAME_PREFIX + indexStr;
140
+ String lastName = DEFAULT_LAST_NAME_PREFIX + indexStr;
141
+
142
+ return new Lead(
143
+ FirstName = firstName,
144
+ LastName = lastName,
145
+ Company = DEFAULT_COMPANY_PREFIX + indexStr,
146
+ Status = DEFAULT_STATUS,
147
+ Email = firstName.toLowerCase() + '.' + lastName.toLowerCase() + '@' + DEFAULT_EMAIL_DOMAIN,
148
+ Phone = '(555) 400-' + String.valueOf(1000 + index),
149
+ MobilePhone = '(555) 500-' + String.valueOf(1000 + index),
150
+ Title = 'Decision Maker',
151
+ Industry = 'Technology',
152
+ LeadSource = 'Web',
153
+ Rating = 'Warm',
154
+ NumberOfEmployees = 50 + index,
155
+ AnnualRevenue = 500000 + (index * 10000),
156
+ Street = '789 Lead Blvd',
157
+ City = 'San Francisco',
158
+ State = 'CA',
159
+ PostalCode = '94104',
160
+ Country = 'USA',
161
+ Website = 'https://testlead' + index + '.example.com',
162
+ Description = 'Test lead created by TestDataFactory for automated testing'
163
+ );
164
+ }
165
+
166
+ /**
167
+ * Get IDs of created records for cleanup
168
+ * @param records List of Lead records
169
+ * @return Set of Lead IDs
170
+ */
171
+ public static Set<Id> getIds(List<Lead> records) {
172
+ Set<Id> ids = new Set<Id>();
173
+ for (Lead lead : records) {
174
+ if (lead.Id != null) {
175
+ ids.add(lead.Id);
176
+ }
177
+ }
178
+ return ids;
179
+ }
180
+
181
+ /**
182
+ * Delete records by IDs (cleanup utility)
183
+ * @param recordIds Set of Lead IDs to delete
184
+ */
185
+ public static void cleanup(Set<Id> recordIds) {
186
+ if (!recordIds.isEmpty()) {
187
+ delete [SELECT Id FROM Lead WHERE Id IN :recordIds];
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Test Data Factory for Opportunity records
3
+ * Supports bulk creation with Account relationships and stage variations
4
+ *
5
+ * Usage:
6
+ * List<Opportunity> opps = TestDataFactory_Opportunity.create(200);
7
+ * List<Opportunity> oppsForAccount = TestDataFactory_Opportunity.createForAccount(50, accountId);
8
+ * List<Opportunity> closedWon = TestDataFactory_Opportunity.createWithStage(100, 'Closed Won');
9
+ */
10
+ public class TestDataFactory_Opportunity {
11
+
12
+ private static final String DEFAULT_NAME_PREFIX = 'Test Opportunity ';
13
+ private static final String DEFAULT_STAGE = 'Prospecting';
14
+ private static final Integer DEFAULT_CLOSE_DAYS = 30;
15
+
16
+ /**
17
+ * Create and insert Opportunity records (creates parent Account automatically)
18
+ * @param count Number of records to create
19
+ * @return List of inserted Opportunity records with IDs
20
+ */
21
+ public static List<Opportunity> create(Integer count) {
22
+ return create(count, true);
23
+ }
24
+
25
+ /**
26
+ * Create Opportunity records with insert option
27
+ * @param count Number of records to create
28
+ * @param doInsert Whether to insert records
29
+ * @return List of Opportunity records
30
+ */
31
+ public static List<Opportunity> create(Integer count, Boolean doInsert) {
32
+ // Create a parent Account
33
+ Account parentAccount = new Account(Name = 'Test Parent Account for Opportunities');
34
+ insert parentAccount;
35
+
36
+ return createForAccount(count, parentAccount.Id, doInsert);
37
+ }
38
+
39
+ /**
40
+ * Create Opportunity records for a specific Account
41
+ * @param count Number of records to create
42
+ * @param accountId Parent Account ID
43
+ * @return List of inserted Opportunity records
44
+ */
45
+ public static List<Opportunity> createForAccount(Integer count, Id accountId) {
46
+ return createForAccount(count, accountId, true);
47
+ }
48
+
49
+ /**
50
+ * Create Opportunity records for a specific Account with insert option
51
+ * @param count Number of records to create
52
+ * @param accountId Parent Account ID
53
+ * @param doInsert Whether to insert records
54
+ * @return List of Opportunity records
55
+ */
56
+ public static List<Opportunity> createForAccount(Integer count, Id accountId, Boolean doInsert) {
57
+ List<Opportunity> records = new List<Opportunity>();
58
+ for (Integer i = 0; i < count; i++) {
59
+ records.add(buildRecord(i, accountId));
60
+ }
61
+ if (doInsert && !records.isEmpty()) {
62
+ insert records;
63
+ }
64
+ return records;
65
+ }
66
+
67
+ /**
68
+ * Create Opportunities with a specific Stage
69
+ * @param count Number of records to create
70
+ * @param stageName StageName picklist value
71
+ * @return List of inserted Opportunity records
72
+ */
73
+ public static List<Opportunity> createWithStage(Integer count, String stageName) {
74
+ Account parentAccount = new Account(Name = 'Test Parent Account for ' + stageName + ' Opps');
75
+ insert parentAccount;
76
+
77
+ return createWithStageForAccount(count, stageName, parentAccount.Id);
78
+ }
79
+
80
+ /**
81
+ * Create Opportunities with a specific Stage for an Account
82
+ * @param count Number of records to create
83
+ * @param stageName StageName picklist value
84
+ * @param accountId Parent Account ID
85
+ * @return List of inserted Opportunity records
86
+ */
87
+ public static List<Opportunity> createWithStageForAccount(Integer count, String stageName, Id accountId) {
88
+ List<Opportunity> records = new List<Opportunity>();
89
+ for (Integer i = 0; i < count; i++) {
90
+ Opportunity opp = buildRecord(i, accountId);
91
+ opp.StageName = stageName;
92
+
93
+ // Set Probability based on stage
94
+ if (stageName == 'Closed Won') {
95
+ opp.Probability = 100;
96
+ } else if (stageName == 'Closed Lost') {
97
+ opp.Probability = 0;
98
+ }
99
+
100
+ records.add(opp);
101
+ }
102
+ if (!records.isEmpty()) {
103
+ insert records;
104
+ }
105
+ return records;
106
+ }
107
+
108
+ /**
109
+ * Create Opportunities with varied Stages for pipeline testing
110
+ * @param count Number of records to create
111
+ * @param accountId Parent Account ID
112
+ * @return List of inserted Opportunity records with varied stages
113
+ */
114
+ public static List<Opportunity> createWithVariedStages(Integer count, Id accountId) {
115
+ List<String> stages = new List<String>{
116
+ 'Prospecting', 'Qualification', 'Needs Analysis',
117
+ 'Value Proposition', 'Id. Decision Makers', 'Perception Analysis',
118
+ 'Proposal/Price Quote', 'Negotiation/Review', 'Closed Won', 'Closed Lost'
119
+ };
120
+
121
+ List<Opportunity> records = new List<Opportunity>();
122
+ for (Integer i = 0; i < count; i++) {
123
+ Opportunity opp = buildRecord(i, accountId);
124
+ opp.StageName = stages[Math.mod(i, stages.size())];
125
+ records.add(opp);
126
+ }
127
+
128
+ if (!records.isEmpty()) {
129
+ insert records;
130
+ }
131
+ return records;
132
+ }
133
+
134
+ /**
135
+ * Create Opportunities with varied Amounts for revenue testing
136
+ * @param count Number of records to create
137
+ * @param accountId Parent Account ID
138
+ * @param minAmount Minimum amount
139
+ * @param maxAmount Maximum amount
140
+ * @return List of inserted Opportunity records
141
+ */
142
+ public static List<Opportunity> createWithVariedAmounts(Integer count, Id accountId, Decimal minAmount, Decimal maxAmount) {
143
+ List<Opportunity> records = new List<Opportunity>();
144
+ Decimal range = maxAmount - minAmount;
145
+
146
+ for (Integer i = 0; i < count; i++) {
147
+ Opportunity opp = buildRecord(i, accountId);
148
+ // Distribute amounts evenly across the range
149
+ opp.Amount = minAmount + (range * i / count);
150
+ records.add(opp);
151
+ }
152
+
153
+ if (!records.isEmpty()) {
154
+ insert records;
155
+ }
156
+ return records;
157
+ }
158
+
159
+ /**
160
+ * Build a single Opportunity record with default values
161
+ * @param index Record index for unique naming
162
+ * @param accountId Parent Account ID
163
+ * @return Opportunity record (not inserted)
164
+ */
165
+ private static Opportunity buildRecord(Integer index, Id accountId) {
166
+ String indexStr = String.valueOf(index).leftPad(5, '0');
167
+
168
+ return new Opportunity(
169
+ Name = DEFAULT_NAME_PREFIX + indexStr,
170
+ AccountId = accountId,
171
+ StageName = DEFAULT_STAGE,
172
+ CloseDate = Date.today().addDays(DEFAULT_CLOSE_DAYS + index),
173
+ Amount = 10000 + (index * 1000),
174
+ Probability = 20,
175
+ Type = 'New Customer',
176
+ LeadSource = 'Web',
177
+ NextStep = 'Follow up call',
178
+ Description = 'Test opportunity created by TestDataFactory for automated testing'
179
+ );
180
+ }
181
+
182
+ /**
183
+ * Get IDs of created records for cleanup
184
+ * @param records List of Opportunity records
185
+ * @return Set of Opportunity IDs
186
+ */
187
+ public static Set<Id> getIds(List<Opportunity> records) {
188
+ Set<Id> ids = new Set<Id>();
189
+ for (Opportunity opp : records) {
190
+ if (opp.Id != null) {
191
+ ids.add(opp.Id);
192
+ }
193
+ }
194
+ return ids;
195
+ }
196
+
197
+ /**
198
+ * Delete records by IDs (cleanup utility)
199
+ * @param recordIds Set of Opportunity IDs to delete
200
+ */
201
+ public static void cleanup(Set<Id> recordIds) {
202
+ if (!recordIds.isEmpty()) {
203
+ delete [SELECT Id FROM Opportunity WHERE Id IN :recordIds];
204
+ }
205
+ }
206
+ }
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Test Data Factory for Task records
3
+ * Supports bulk creation with polymorphic Who/What relationships
4
+ *
5
+ * Usage:
6
+ * List<Task> tasks = TestDataFactory_Task.create(200);
7
+ * List<Task> tasksForContact = TestDataFactory_Task.createForWho(50, contactId);
8
+ * List<Task> tasksForAccount = TestDataFactory_Task.createForWhat(50, accountId);
9
+ */
10
+ public class TestDataFactory_Task {
11
+
12
+ private static final String DEFAULT_SUBJECT_PREFIX = 'Test Task ';
13
+ private static final String DEFAULT_STATUS = 'Not Started';
14
+ private static final String DEFAULT_PRIORITY = 'Normal';
15
+
16
+ /**
17
+ * Create and insert Task records (creates related Contact automatically)
18
+ * @param count Number of records to create
19
+ * @return List of inserted Task records with IDs
20
+ */
21
+ public static List<Task> create(Integer count) {
22
+ return create(count, true);
23
+ }
24
+
25
+ /**
26
+ * Create Task records with insert option
27
+ * @param count Number of records to create
28
+ * @param doInsert Whether to insert records
29
+ * @return List of Task records
30
+ */
31
+ public static List<Task> create(Integer count, Boolean doInsert) {
32
+ // Create parent Account and Contact for Who field
33
+ Account parentAccount = new Account(Name = 'Test Parent Account for Tasks');
34
+ insert parentAccount;
35
+
36
+ Contact parentContact = new Contact(
37
+ FirstName = 'Test',
38
+ LastName = 'TaskContact',
39
+ AccountId = parentAccount.Id
40
+ );
41
+ insert parentContact;
42
+
43
+ List<Task> records = new List<Task>();
44
+ for (Integer i = 0; i < count; i++) {
45
+ records.add(buildRecord(i, parentContact.Id, parentAccount.Id));
46
+ }
47
+ if (doInsert && !records.isEmpty()) {
48
+ insert records;
49
+ }
50
+ return records;
51
+ }
52
+
53
+ /**
54
+ * Create Task records for a specific Who (Contact or Lead)
55
+ * @param count Number of records to create
56
+ * @param whoId Contact or Lead ID for the Who field
57
+ * @return List of inserted Task records
58
+ */
59
+ public static List<Task> createForWho(Integer count, Id whoId) {
60
+ return createForWho(count, whoId, true);
61
+ }
62
+
63
+ /**
64
+ * Create Task records for a specific Who with insert option
65
+ * @param count Number of records to create
66
+ * @param whoId Contact or Lead ID
67
+ * @param doInsert Whether to insert records
68
+ * @return List of Task records
69
+ */
70
+ public static List<Task> createForWho(Integer count, Id whoId, Boolean doInsert) {
71
+ List<Task> records = new List<Task>();
72
+ for (Integer i = 0; i < count; i++) {
73
+ records.add(buildRecord(i, whoId, null));
74
+ }
75
+ if (doInsert && !records.isEmpty()) {
76
+ insert records;
77
+ }
78
+ return records;
79
+ }
80
+
81
+ /**
82
+ * Create Task records for a specific What (Account, Opportunity, Case, etc.)
83
+ * @param count Number of records to create
84
+ * @param whatId Account, Opportunity, or Case ID
85
+ * @return List of inserted Task records
86
+ */
87
+ public static List<Task> createForWhat(Integer count, Id whatId) {
88
+ return createForWhat(count, whatId, true);
89
+ }
90
+
91
+ /**
92
+ * Create Task records for a specific What with insert option
93
+ * @param count Number of records to create
94
+ * @param whatId Account, Opportunity, or Case ID
95
+ * @param doInsert Whether to insert records
96
+ * @return List of Task records
97
+ */
98
+ public static List<Task> createForWhat(Integer count, Id whatId, Boolean doInsert) {
99
+ List<Task> records = new List<Task>();
100
+ for (Integer i = 0; i < count; i++) {
101
+ records.add(buildRecord(i, null, whatId));
102
+ }
103
+ if (doInsert && !records.isEmpty()) {
104
+ insert records;
105
+ }
106
+ return records;
107
+ }
108
+
109
+ /**
110
+ * Create Task records for both Who and What
111
+ * @param count Number of records to create
112
+ * @param whoId Contact or Lead ID
113
+ * @param whatId Account, Opportunity, or Case ID
114
+ * @return List of inserted Task records
115
+ */
116
+ public static List<Task> createForWhoAndWhat(Integer count, Id whoId, Id whatId) {
117
+ List<Task> records = new List<Task>();
118
+ for (Integer i = 0; i < count; i++) {
119
+ records.add(buildRecord(i, whoId, whatId));
120
+ }
121
+ if (!records.isEmpty()) {
122
+ insert records;
123
+ }
124
+ return records;
125
+ }
126
+
127
+ /**
128
+ * Create Tasks with a specific Status
129
+ * @param count Number of records to create
130
+ * @param status Task Status picklist value
131
+ * @return List of inserted Task records
132
+ */
133
+ public static List<Task> createWithStatus(Integer count, String status) {
134
+ Account parentAccount = new Account(Name = 'Test Account for ' + status + ' Tasks');
135
+ insert parentAccount;
136
+
137
+ List<Task> records = new List<Task>();
138
+ for (Integer i = 0; i < count; i++) {
139
+ Task t = buildRecord(i, null, parentAccount.Id);
140
+ t.Status = status;
141
+ records.add(t);
142
+ }
143
+ if (!records.isEmpty()) {
144
+ insert records;
145
+ }
146
+ return records;
147
+ }
148
+
149
+ /**
150
+ * Create completed Tasks for history testing
151
+ * @param count Number of records to create
152
+ * @return List of inserted completed Task records
153
+ */
154
+ public static List<Task> createCompleted(Integer count) {
155
+ Account parentAccount = new Account(Name = 'Test Account for Completed Tasks');
156
+ insert parentAccount;
157
+
158
+ List<Task> records = new List<Task>();
159
+ for (Integer i = 0; i < count; i++) {
160
+ Task t = buildRecord(i, null, parentAccount.Id);
161
+ t.Status = 'Completed';
162
+ t.Priority = 'Normal';
163
+ records.add(t);
164
+ }
165
+ if (!records.isEmpty()) {
166
+ insert records;
167
+ }
168
+ return records;
169
+ }
170
+
171
+ /**
172
+ * Create Tasks with varied Subjects for search testing
173
+ * @param count Number of records to create
174
+ * @return List of inserted Task records with varied subjects
175
+ */
176
+ public static List<Task> createWithVariedSubjects(Integer count) {
177
+ List<String> subjects = new List<String>{
178
+ 'Call', 'Email', 'Meeting', 'Send Letter', 'Send Quote',
179
+ 'Follow Up', 'Demo', 'Proposal', 'Contract Review', 'Other'
180
+ };
181
+
182
+ Account parentAccount = new Account(Name = 'Test Account for Varied Tasks');
183
+ insert parentAccount;
184
+
185
+ List<Task> records = new List<Task>();
186
+ for (Integer i = 0; i < count; i++) {
187
+ Task t = buildRecord(i, null, parentAccount.Id);
188
+ t.Subject = subjects[Math.mod(i, subjects.size())];
189
+ records.add(t);
190
+ }
191
+
192
+ if (!records.isEmpty()) {
193
+ insert records;
194
+ }
195
+ return records;
196
+ }
197
+
198
+ /**
199
+ * Build a single Task record with default values
200
+ * @param index Record index for unique naming
201
+ * @param whoId Contact or Lead ID (optional)
202
+ * @param whatId Account, Opportunity, or Case ID (optional)
203
+ * @return Task record (not inserted)
204
+ */
205
+ private static Task buildRecord(Integer index, Id whoId, Id whatId) {
206
+ String indexStr = String.valueOf(index).leftPad(5, '0');
207
+
208
+ return new Task(
209
+ Subject = DEFAULT_SUBJECT_PREFIX + indexStr,
210
+ WhoId = whoId,
211
+ WhatId = whatId,
212
+ Status = DEFAULT_STATUS,
213
+ Priority = DEFAULT_PRIORITY,
214
+ ActivityDate = Date.today().addDays(7 + index),
215
+ Description = 'Test task created by TestDataFactory for automated testing. Task index: ' + index,
216
+ Type = 'Call',
217
+ IsReminderSet = false,
218
+ TaskSubtype = 'Task'
219
+ );
220
+ }
221
+
222
+ /**
223
+ * Get IDs of created records for cleanup
224
+ * @param records List of Task records
225
+ * @return Set of Task IDs
226
+ */
227
+ public static Set<Id> getIds(List<Task> records) {
228
+ Set<Id> ids = new Set<Id>();
229
+ for (Task t : records) {
230
+ if (t.Id != null) {
231
+ ids.add(t.Id);
232
+ }
233
+ }
234
+ return ids;
235
+ }
236
+
237
+ /**
238
+ * Delete records by IDs (cleanup utility)
239
+ * @param recordIds Set of Task IDs to delete
240
+ */
241
+ public static void cleanup(Set<Id> recordIds) {
242
+ if (!recordIds.isEmpty()) {
243
+ delete [SELECT Id FROM Task WHERE Id IN :recordIds];
244
+ }
245
+ }
246
+ }