@salesforce/afv-skills 1.8.0 → 1.9.1

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,153 @@
1
+ -- ═══════════════════════════════════════════════════════════════════════════════
2
+ -- PARENT-TO-CHILD QUERY (Subquery Pattern)
3
+ -- ═══════════════════════════════════════════════════════════════════════════════
4
+ --
5
+ -- Returns parent records with related child records nested in the results.
6
+ -- Child records are returned as a nested list within each parent record.
7
+ --
8
+ -- USE WHEN:
9
+ -- • Starting from the parent object and need child record details
10
+ -- • Need to iterate through parents and their related children
11
+ -- • Building hierarchical data structures
12
+ --
13
+ -- LIMITS:
14
+ -- • Maximum 20 subqueries per query
15
+ -- • Child records limited by inner LIMIT (or 200 if not specified)
16
+ -- • 5 levels of relationship depth
17
+ --
18
+ -- ═══════════════════════════════════════════════════════════════════════════════
19
+
20
+ -- ───────────────────────────────────────────────────────────────────────────────
21
+ -- BASIC: Account with Contacts
22
+ -- ───────────────────────────────────────────────────────────────────────────────
23
+ SELECT Id, Name, Industry, AnnualRevenue,
24
+ (SELECT Id, FirstName, LastName, Email, Phone, Title
25
+ FROM Contacts
26
+ ORDER BY LastName ASC
27
+ LIMIT 100)
28
+ FROM Account
29
+ WHERE Industry = 'Technology'
30
+ LIMIT 50
31
+
32
+ -- ───────────────────────────────────────────────────────────────────────────────
33
+ -- MULTIPLE CHILDREN: Account with Contacts AND Opportunities
34
+ -- ───────────────────────────────────────────────────────────────────────────────
35
+ SELECT Id, Name, Industry,
36
+ (SELECT Id, FirstName, LastName, Email
37
+ FROM Contacts
38
+ WHERE Email != null
39
+ LIMIT 50),
40
+ (SELECT Id, Name, StageName, Amount, CloseDate
41
+ FROM Opportunities
42
+ WHERE IsClosed = false
43
+ ORDER BY CloseDate ASC
44
+ LIMIT 50)
45
+ FROM Account
46
+ WHERE Id IN :accountIds
47
+
48
+ -- ───────────────────────────────────────────────────────────────────────────────
49
+ -- FILTERED CHILDREN: Only active/specific child records
50
+ -- ───────────────────────────────────────────────────────────────────────────────
51
+ SELECT Id, Name,
52
+ (SELECT Id, Subject, Status, Priority
53
+ FROM Cases
54
+ WHERE Status != 'Closed'
55
+ AND Priority = 'High'
56
+ ORDER BY CreatedDate DESC
57
+ LIMIT 25)
58
+ FROM Account
59
+ WHERE Type = 'Customer'
60
+
61
+ -- ───────────────────────────────────────────────────────────────────────────────
62
+ -- OPPORTUNITY with Products (OpportunityLineItems)
63
+ -- ───────────────────────────────────────────────────────────────────────────────
64
+ SELECT Id, Name, StageName, Amount, CloseDate,
65
+ Account.Name,
66
+ (SELECT Id, Name, Quantity, UnitPrice, TotalPrice,
67
+ Product2.Name, Product2.ProductCode
68
+ FROM OpportunityLineItems
69
+ ORDER BY TotalPrice DESC)
70
+ FROM Opportunity
71
+ WHERE StageName = 'Closed Won'
72
+ AND CloseDate = THIS_QUARTER
73
+
74
+ -- ───────────────────────────────────────────────────────────────────────────────
75
+ -- CASE with Comments and Attachments
76
+ -- ───────────────────────────────────────────────────────────────────────────────
77
+ SELECT Id, CaseNumber, Subject, Status, Priority,
78
+ Account.Name,
79
+ Contact.Name,
80
+ (SELECT Id, CommentBody, CreatedBy.Name, CreatedDate
81
+ FROM CaseComments
82
+ ORDER BY CreatedDate DESC
83
+ LIMIT 10),
84
+ (SELECT Id, Name, ContentType, BodyLength
85
+ FROM Attachments
86
+ LIMIT 20)
87
+ FROM Case
88
+ WHERE Status != 'Closed'
89
+ ORDER BY Priority DESC, CreatedDate DESC
90
+
91
+ -- ───────────────────────────────────────────────────────────────────────────────
92
+ -- USER with all related activity
93
+ -- ───────────────────────────────────────────────────────────────────────────────
94
+ SELECT Id, Name, Username, IsActive,
95
+ (SELECT Id, Subject, Status, ActivityDate
96
+ FROM TasksOwned
97
+ WHERE Status != 'Completed'
98
+ ORDER BY ActivityDate ASC
99
+ LIMIT 25),
100
+ (SELECT Id, Subject, StartDateTime, EndDateTime
101
+ FROM EventsOwned
102
+ WHERE StartDateTime >= TODAY
103
+ ORDER BY StartDateTime ASC
104
+ LIMIT 25)
105
+ FROM User
106
+ WHERE IsActive = true
107
+ AND Profile.Name = 'Standard User'
108
+
109
+ -- ───────────────────────────────────────────────────────────────────────────────
110
+ -- CUSTOM OBJECT: Parent with Custom Child Objects
111
+ -- Replace {{ParentObject}}, {{ChildRelationshipName}}, {{ChildObject}} with actual names
112
+ -- ───────────────────────────────────────────────────────────────────────────────
113
+ -- SELECT Id, Name, Status__c,
114
+ -- (SELECT Id, Name, Amount__c, Date__c
115
+ -- FROM {{ChildRelationshipName}}__r
116
+ -- WHERE Status__c = 'Active'
117
+ -- ORDER BY Date__c DESC
118
+ -- LIMIT 50)
119
+ -- FROM {{ParentObject}}__c
120
+ -- WHERE OwnerId = :userId
121
+
122
+ -- ═══════════════════════════════════════════════════════════════════════════════
123
+ -- APEX PROCESSING PATTERN
124
+ -- ═══════════════════════════════════════════════════════════════════════════════
125
+ /*
126
+ // Query with subquery
127
+ List<Account> accounts = [
128
+ SELECT Id, Name,
129
+ (SELECT Id, FirstName, LastName FROM Contacts)
130
+ FROM Account
131
+ WHERE Id IN :accountIds
132
+ ];
133
+
134
+ // Process parent and children
135
+ for (Account acc : accounts) {
136
+ System.debug('Account: ' + acc.Name);
137
+
138
+ // Access child records via relationship name
139
+ if (acc.Contacts != null && !acc.Contacts.isEmpty()) {
140
+ for (Contact con : acc.Contacts) {
141
+ System.debug(' Contact: ' + con.FirstName + ' ' + con.LastName);
142
+ }
143
+ }
144
+ }
145
+ */
146
+
147
+ -- ═══════════════════════════════════════════════════════════════════════════════
148
+ -- SF CLI USAGE
149
+ -- ═══════════════════════════════════════════════════════════════════════════════
150
+ -- sf data query \
151
+ -- --query "SELECT Id, Name, (SELECT Id, Name FROM Contacts) FROM Account LIMIT 10" \
152
+ -- --target-org myorg \
153
+ -- --json
@@ -0,0 +1,198 @@
1
+ -- ═══════════════════════════════════════════════════════════════════════════════
2
+ -- POLYMORPHIC RELATIONSHIP QUERIES (TYPEOF Pattern)
3
+ -- ═══════════════════════════════════════════════════════════════════════════════
4
+ --
5
+ -- Polymorphic lookups can point to multiple object types.
6
+ -- Use TYPEOF to access object-specific fields based on the actual type.
7
+ --
8
+ -- COMMON POLYMORPHIC FIELDS:
9
+ -- • Who (WhoId) - Task/Event → Contact OR Lead
10
+ -- • What (WhatId) - Task/Event → Account, Opportunity, Case, etc.
11
+ -- • Owner (OwnerId) - Most objects → User OR Queue
12
+ -- • Related (RelatedToId) - Various → Multiple objects
13
+ --
14
+ -- USE WHEN:
15
+ -- • Querying Task, Event, or other objects with polymorphic lookups
16
+ -- • Need type-specific fields from the related record
17
+ -- • Building reports that span multiple related object types
18
+ --
19
+ -- ═══════════════════════════════════════════════════════════════════════════════
20
+
21
+ -- ───────────────────────────────────────────────────────────────────────────────
22
+ -- BASIC TYPEOF: Task with Who (Contact vs Lead)
23
+ -- ───────────────────────────────────────────────────────────────────────────────
24
+ SELECT Id, Subject, Status, ActivityDate,
25
+ TYPEOF Who
26
+ WHEN Contact THEN FirstName, LastName, Email, Account.Name
27
+ WHEN Lead THEN FirstName, LastName, Email, Company
28
+ END
29
+ FROM Task
30
+ WHERE Status != 'Completed'
31
+ AND ActivityDate >= TODAY
32
+
33
+ -- ───────────────────────────────────────────────────────────────────────────────
34
+ -- TYPEOF with What (Account, Opportunity, Case)
35
+ -- ───────────────────────────────────────────────────────────────────────────────
36
+ SELECT Id, Subject, Status, Priority,
37
+ TYPEOF What
38
+ WHEN Account THEN Name, Industry, AnnualRevenue, Type
39
+ WHEN Opportunity THEN Name, StageName, Amount, CloseDate
40
+ WHEN Case THEN CaseNumber, Subject, Status, Priority
41
+ END
42
+ FROM Task
43
+ WHERE CreatedDate = THIS_WEEK
44
+ ORDER BY ActivityDate ASC
45
+
46
+ -- ───────────────────────────────────────────────────────────────────────────────
47
+ -- FULL TYPEOF: Both Who and What in same query
48
+ -- ───────────────────────────────────────────────────────────────────────────────
49
+ SELECT Id, Subject, Status, ActivityDate, Priority,
50
+ Owner.Name,
51
+ TYPEOF Who
52
+ WHEN Contact THEN
53
+ FirstName, LastName, Email, Phone,
54
+ Account.Name, Account.Industry
55
+ WHEN Lead THEN
56
+ FirstName, LastName, Email, Company, Status
57
+ END,
58
+ TYPEOF What
59
+ WHEN Account THEN Name, Industry, Type, BillingCity
60
+ WHEN Opportunity THEN Name, StageName, Amount, Probability
61
+ WHEN Case THEN CaseNumber, Subject, Status
62
+ WHEN Campaign THEN Name, Status, Type
63
+ END
64
+ FROM Task
65
+ WHERE OwnerId = :currentUserId
66
+ AND Status = 'Not Started'
67
+ ORDER BY ActivityDate ASC
68
+ LIMIT 100
69
+
70
+ -- ───────────────────────────────────────────────────────────────────────────────
71
+ -- EVENT with polymorphic relationships
72
+ -- ───────────────────────────────────────────────────────────────────────────────
73
+ SELECT Id, Subject, StartDateTime, EndDateTime, Location,
74
+ TYPEOF Who
75
+ WHEN Contact THEN FirstName, LastName, Email, Title
76
+ WHEN Lead THEN FirstName, LastName, Company
77
+ END,
78
+ TYPEOF What
79
+ WHEN Account THEN Name, Phone, Website
80
+ WHEN Opportunity THEN Name, StageName, Amount
81
+ END
82
+ FROM Event
83
+ WHERE StartDateTime >= TODAY
84
+ AND StartDateTime <= NEXT_MONTH
85
+ ORDER BY StartDateTime ASC
86
+
87
+ -- ───────────────────────────────────────────────────────────────────────────────
88
+ -- Using ELSE clause for unhandled types
89
+ -- ───────────────────────────────────────────────────────────────────────────────
90
+ SELECT Id, Subject, Status,
91
+ TYPEOF What
92
+ WHEN Account THEN Name, Industry
93
+ WHEN Opportunity THEN Name, StageName
94
+ WHEN Case THEN CaseNumber
95
+ ELSE Name
96
+ END
97
+ FROM Task
98
+ WHERE ActivityDate = TODAY
99
+
100
+ -- ───────────────────────────────────────────────────────────────────────────────
101
+ -- FeedItem with polymorphic Parent
102
+ -- ───────────────────────────────────────────────────────────────────────────────
103
+ SELECT Id, Body, CreatedDate, CreatedBy.Name,
104
+ TYPEOF Parent
105
+ WHEN Account THEN Name, Industry
106
+ WHEN Opportunity THEN Name, StageName
107
+ WHEN Case THEN CaseNumber, Subject
108
+ WHEN Contact THEN FirstName, LastName
109
+ WHEN Lead THEN FirstName, LastName, Company
110
+ WHEN User THEN Name, Title
111
+ END
112
+ FROM FeedItem
113
+ WHERE CreatedDate = THIS_WEEK
114
+ ORDER BY CreatedDate DESC
115
+ LIMIT 50
116
+
117
+ -- ───────────────────────────────────────────────────────────────────────────────
118
+ -- ContentDocumentLink with polymorphic LinkedEntity
119
+ -- ───────────────────────────────────────────────────────────────────────────────
120
+ SELECT Id, ContentDocument.Title, ContentDocument.FileType,
121
+ TYPEOF LinkedEntity
122
+ WHEN Account THEN Name, Industry
123
+ WHEN Contact THEN FirstName, LastName
124
+ WHEN Opportunity THEN Name, Amount
125
+ WHEN Case THEN CaseNumber, Subject
126
+ END
127
+ FROM ContentDocumentLink
128
+ WHERE ContentDocument.FileType = 'PDF'
129
+ ORDER BY ContentDocument.CreatedDate DESC
130
+ LIMIT 100
131
+
132
+ -- ═══════════════════════════════════════════════════════════════════════════════
133
+ -- ALTERNATIVE: Check Type.Name without TYPEOF
134
+ -- Use when you only need to identify the type, not access specific fields
135
+ -- ═══════════════════════════════════════════════════════════════════════════════
136
+ SELECT Id, Subject, Status,
137
+ Who.Type,
138
+ Who.Name,
139
+ What.Type,
140
+ What.Name
141
+ FROM Task
142
+ WHERE ActivityDate = TODAY
143
+
144
+ -- ═══════════════════════════════════════════════════════════════════════════════
145
+ -- APEX PROCESSING PATTERN
146
+ -- ═══════════════════════════════════════════════════════════════════════════════
147
+ /*
148
+ // Query with TYPEOF
149
+ List<Task> tasks = [
150
+ SELECT Id, Subject,
151
+ TYPEOF Who
152
+ WHEN Contact THEN FirstName, LastName, Email
153
+ WHEN Lead THEN FirstName, LastName, Company
154
+ END
155
+ FROM Task
156
+ WHERE ActivityDate = TODAY
157
+ ];
158
+
159
+ // Process based on type
160
+ for (Task t : tasks) {
161
+ if (t.WhoId != null) {
162
+ Schema.SObjectType whoType = t.WhoId.getSObjectType();
163
+
164
+ if (whoType == Contact.SObjectType) {
165
+ Contact con = (Contact) t.getSObject('Who');
166
+ System.debug('Contact: ' + con.FirstName + ' ' + con.LastName);
167
+ }
168
+ else if (whoType == Lead.SObjectType) {
169
+ Lead lead = (Lead) t.getSObject('Who');
170
+ System.debug('Lead: ' + lead.FirstName + ' at ' + lead.Company);
171
+ }
172
+ }
173
+ }
174
+ */
175
+
176
+ -- ═══════════════════════════════════════════════════════════════════════════════
177
+ -- APEX ALTERNATIVE: Using instanceof
178
+ -- ═══════════════════════════════════════════════════════════════════════════════
179
+ /*
180
+ for (Task t : tasks) {
181
+ SObject who = t.getSObject('Who');
182
+ if (who instanceof Contact) {
183
+ Contact con = (Contact) who;
184
+ System.debug('Contact: ' + con.Email);
185
+ } else if (who instanceof Lead) {
186
+ Lead lead = (Lead) who;
187
+ System.debug('Lead Company: ' + lead.Company);
188
+ }
189
+ }
190
+ */
191
+
192
+ -- ═══════════════════════════════════════════════════════════════════════════════
193
+ -- SF CLI USAGE
194
+ -- ═══════════════════════════════════════════════════════════════════════════════
195
+ -- sf data query \
196
+ -- --query "SELECT Id, Subject, TYPEOF Who WHEN Contact THEN FirstName, LastName WHEN Lead THEN Company END FROM Task WHERE ActivityDate = TODAY LIMIT 10" \
197
+ -- --target-org myorg \
198
+ -- --json
@@ -0,0 +1,287 @@
1
+ -- ═══════════════════════════════════════════════════════════════════════════════
2
+ -- SUBQUERY PATTERNS (Semi-Join & Anti-Join)
3
+ -- ═══════════════════════════════════════════════════════════════════════════════
4
+ --
5
+ -- Subqueries filter the outer query based on related records.
6
+ -- Two main patterns: Semi-Join (IN) and Anti-Join (NOT IN).
7
+ --
8
+ -- SEMI-JOIN (IN):
9
+ -- • Returns records that HAVE matching related records
10
+ -- • "Give me Accounts that have Opportunities"
11
+ --
12
+ -- ANTI-JOIN (NOT IN):
13
+ -- • Returns records that DO NOT have matching related records
14
+ -- • "Give me Accounts without any Contacts"
15
+ --
16
+ -- LIMITS:
17
+ -- • Maximum 2 levels of semi-join nesting
18
+ -- • Inner query can only return Id field
19
+ -- • Inner query limited to 50,000 records
20
+ --
21
+ -- ═══════════════════════════════════════════════════════════════════════════════
22
+
23
+ -- ═══════════════════════════════════════════════════════════════════════════════
24
+ -- SEMI-JOIN PATTERNS (Records WITH related records)
25
+ -- ═══════════════════════════════════════════════════════════════════════════════
26
+
27
+ -- ───────────────────────────────────────────────────────────────────────────────
28
+ -- BASIC SEMI-JOIN: Accounts with Opportunities
29
+ -- ───────────────────────────────────────────────────────────────────────────────
30
+ SELECT Id, Name, Industry, Type
31
+ FROM Account
32
+ WHERE Id IN (
33
+ SELECT AccountId
34
+ FROM Opportunity
35
+ )
36
+
37
+ -- ───────────────────────────────────────────────────────────────────────────────
38
+ -- FILTERED SEMI-JOIN: Accounts with OPEN Opportunities
39
+ -- ───────────────────────────────────────────────────────────────────────────────
40
+ SELECT Id, Name, Industry, AnnualRevenue
41
+ FROM Account
42
+ WHERE Id IN (
43
+ SELECT AccountId
44
+ FROM Opportunity
45
+ WHERE IsClosed = false
46
+ AND Amount > 50000
47
+ )
48
+ AND Industry = 'Technology'
49
+
50
+ -- ───────────────────────────────────────────────────────────────────────────────
51
+ -- SEMI-JOIN: Accounts with Won Opportunities this year
52
+ -- ───────────────────────────────────────────────────────────────────────────────
53
+ SELECT Id, Name, Type, Owner.Name
54
+ FROM Account
55
+ WHERE Id IN (
56
+ SELECT AccountId
57
+ FROM Opportunity
58
+ WHERE StageName = 'Closed Won'
59
+ AND CloseDate = THIS_YEAR
60
+ )
61
+ ORDER BY Name
62
+
63
+ -- ───────────────────────────────────────────────────────────────────────────────
64
+ -- SEMI-JOIN: Contacts at Accounts with Cases
65
+ -- ───────────────────────────────────────────────────────────────────────────────
66
+ SELECT Id, FirstName, LastName, Email, Account.Name
67
+ FROM Contact
68
+ WHERE AccountId IN (
69
+ SELECT AccountId
70
+ FROM Case
71
+ WHERE Status != 'Closed'
72
+ )
73
+ AND Email != null
74
+
75
+ -- ───────────────────────────────────────────────────────────────────────────────
76
+ -- SEMI-JOIN: Products used in Opportunities
77
+ -- ───────────────────────────────────────────────────────────────────────────────
78
+ SELECT Id, Name, ProductCode, Family
79
+ FROM Product2
80
+ WHERE Id IN (
81
+ SELECT Product2Id
82
+ FROM OpportunityLineItem
83
+ WHERE Opportunity.StageName = 'Closed Won'
84
+ )
85
+ AND IsActive = true
86
+
87
+ -- ═══════════════════════════════════════════════════════════════════════════════
88
+ -- ANTI-JOIN PATTERNS (Records WITHOUT related records)
89
+ -- ═══════════════════════════════════════════════════════════════════════════════
90
+
91
+ -- ───────────────────────────────────────────────────────────────────────────────
92
+ -- BASIC ANTI-JOIN: Accounts without Contacts
93
+ -- ───────────────────────────────────────────────────────────────────────────────
94
+ SELECT Id, Name, Industry, Type
95
+ FROM Account
96
+ WHERE Id NOT IN (
97
+ SELECT AccountId
98
+ FROM Contact
99
+ )
100
+
101
+ -- ───────────────────────────────────────────────────────────────────────────────
102
+ -- ANTI-JOIN: Accounts without Opportunities
103
+ -- ───────────────────────────────────────────────────────────────────────────────
104
+ SELECT Id, Name, Industry, Type, CreatedDate
105
+ FROM Account
106
+ WHERE Id NOT IN (
107
+ SELECT AccountId
108
+ FROM Opportunity
109
+ )
110
+ AND Type = 'Prospect'
111
+ AND CreatedDate < LAST_90_DAYS
112
+
113
+ -- ───────────────────────────────────────────────────────────────────────────────
114
+ -- ANTI-JOIN: Contacts without Activities (no Tasks)
115
+ -- ───────────────────────────────────────────────────────────────────────────────
116
+ SELECT Id, FirstName, LastName, Email, Account.Name
117
+ FROM Contact
118
+ WHERE Id NOT IN (
119
+ SELECT WhoId
120
+ FROM Task
121
+ WHERE WhoId != null
122
+ )
123
+ AND Email != null
124
+
125
+ -- ───────────────────────────────────────────────────────────────────────────────
126
+ -- ANTI-JOIN: Leads not converted
127
+ -- ───────────────────────────────────────────────────────────────────────────────
128
+ SELECT Id, FirstName, LastName, Company, Status
129
+ FROM Lead
130
+ WHERE IsConverted = false
131
+ AND Id NOT IN (
132
+ SELECT WhoId
133
+ FROM Task
134
+ WHERE CreatedDate = LAST_30_DAYS
135
+ )
136
+ AND Status = 'Open - Not Contacted'
137
+
138
+ -- ───────────────────────────────────────────────────────────────────────────────
139
+ -- ANTI-JOIN: Products not sold
140
+ -- ───────────────────────────────────────────────────────────────────────────────
141
+ SELECT Id, Name, ProductCode, Family
142
+ FROM Product2
143
+ WHERE Id NOT IN (
144
+ SELECT Product2Id
145
+ FROM OpportunityLineItem
146
+ )
147
+ AND IsActive = true
148
+
149
+ -- ═══════════════════════════════════════════════════════════════════════════════
150
+ -- COMBINED PATTERNS
151
+ -- ═══════════════════════════════════════════════════════════════════════════════
152
+
153
+ -- ───────────────────────────────────────────────────────────────────────────────
154
+ -- BOTH: Accounts with Contacts but no Opportunities
155
+ -- ───────────────────────────────────────────────────────────────────────────────
156
+ SELECT Id, Name, Industry
157
+ FROM Account
158
+ WHERE Id IN (
159
+ SELECT AccountId
160
+ FROM Contact
161
+ )
162
+ AND Id NOT IN (
163
+ SELECT AccountId
164
+ FROM Opportunity
165
+ )
166
+
167
+ -- ───────────────────────────────────────────────────────────────────────────────
168
+ -- COMPLEX: Accounts with Open Cases but no recent Activity
169
+ -- ───────────────────────────────────────────────────────────────────────────────
170
+ SELECT Id, Name, Type, Owner.Name
171
+ FROM Account
172
+ WHERE Id IN (
173
+ SELECT AccountId
174
+ FROM Case
175
+ WHERE Status != 'Closed'
176
+ AND Priority = 'High'
177
+ )
178
+ AND Id NOT IN (
179
+ SELECT WhatId
180
+ FROM Task
181
+ WHERE ActivityDate >= LAST_7_DAYS
182
+ AND WhatId != null
183
+ )
184
+
185
+ -- ───────────────────────────────────────────────────────────────────────────────
186
+ -- MULTI-CONDITION: Active customers needing attention
187
+ -- ───────────────────────────────────────────────────────────────────────────────
188
+ SELECT Id, Name, Industry, LastActivityDate
189
+ FROM Account
190
+ WHERE Type = 'Customer'
191
+ AND Id IN (
192
+ SELECT AccountId
193
+ FROM Opportunity
194
+ WHERE StageName = 'Closed Won'
195
+ AND CloseDate >= LAST_YEAR
196
+ )
197
+ AND Id NOT IN (
198
+ SELECT WhatId
199
+ FROM Task
200
+ WHERE CreatedDate >= LAST_30_DAYS
201
+ AND WhatId != null
202
+ )
203
+ ORDER BY LastActivityDate ASC NULLS FIRST
204
+ LIMIT 50
205
+
206
+ -- ═══════════════════════════════════════════════════════════════════════════════
207
+ -- NESTED SUBQUERIES (Maximum 2 levels)
208
+ -- ═══════════════════════════════════════════════════════════════════════════════
209
+
210
+ -- ───────────────────────────────────────────────────────────────────────────────
211
+ -- NESTED: Contacts at Accounts with Won Enterprise Opportunities
212
+ -- ───────────────────────────────────────────────────────────────────────────────
213
+ SELECT Id, FirstName, LastName, Email
214
+ FROM Contact
215
+ WHERE AccountId IN (
216
+ SELECT AccountId
217
+ FROM Opportunity
218
+ WHERE StageName = 'Closed Won'
219
+ AND Amount >= 100000
220
+ )
221
+
222
+ -- ═══════════════════════════════════════════════════════════════════════════════
223
+ -- ALTERNATIVE: EXISTS-style pattern using relationship
224
+ -- When you need to check existence with complex conditions
225
+ -- ═══════════════════════════════════════════════════════════════════════════════
226
+
227
+ -- Instead of subquery, sometimes a relationship query is clearer:
228
+ -- "Accounts that have at least one high-value Opportunity"
229
+
230
+ -- Using parent-to-child to verify related records exist:
231
+ SELECT Id, Name,
232
+ (SELECT Id FROM Opportunities WHERE Amount > 100000 LIMIT 1)
233
+ FROM Account
234
+ WHERE Industry = 'Technology'
235
+
236
+ -- Then filter in Apex for accounts that have the nested result
237
+
238
+ -- ═══════════════════════════════════════════════════════════════════════════════
239
+ -- APEX PROCESSING PATTERN
240
+ -- ═══════════════════════════════════════════════════════════════════════════════
241
+ /*
242
+ // Semi-join: Accounts with open high-value opportunities
243
+ List<Account> accountsWithOpps = [
244
+ SELECT Id, Name, Industry
245
+ FROM Account
246
+ WHERE Id IN (
247
+ SELECT AccountId
248
+ FROM Opportunity
249
+ WHERE IsClosed = false
250
+ AND Amount > 100000
251
+ )
252
+ ];
253
+
254
+ System.debug('Accounts with high-value pipeline: ' + accountsWithOpps.size());
255
+
256
+ // Anti-join: Accounts needing outreach
257
+ List<Account> neglectedAccounts = [
258
+ SELECT Id, Name, Type, LastActivityDate
259
+ FROM Account
260
+ WHERE Type = 'Customer'
261
+ AND Id NOT IN (
262
+ SELECT WhatId
263
+ FROM Task
264
+ WHERE CreatedDate >= LAST_30_DAYS
265
+ AND WhatId != null
266
+ )
267
+ ORDER BY LastActivityDate ASC NULLS FIRST
268
+ LIMIT 100
269
+ ];
270
+
271
+ System.debug('Accounts needing outreach: ' + neglectedAccounts.size());
272
+ */
273
+
274
+ -- ═══════════════════════════════════════════════════════════════════════════════
275
+ -- SF CLI USAGE
276
+ -- ═══════════════════════════════════════════════════════════════════════════════
277
+ -- Semi-join:
278
+ -- sf data query \
279
+ -- --query "SELECT Id, Name FROM Account WHERE Id IN (SELECT AccountId FROM Opportunity WHERE StageName = 'Closed Won') LIMIT 20" \
280
+ -- --target-org myorg \
281
+ -- --json
282
+ --
283
+ -- Anti-join:
284
+ -- sf data query \
285
+ -- --query "SELECT Id, Name FROM Account WHERE Id NOT IN (SELECT AccountId FROM Contact) LIMIT 20" \
286
+ -- --target-org myorg \
287
+ -- --json