@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,51 @@
1
+ # preparing-datacloud
2
+
3
+ Ingestion and lake-preparation workflows for Salesforce Data Cloud.
4
+
5
+ ## Use this skill for
6
+
7
+ - data streams
8
+ - Data Lake Objects (DLOs)
9
+ - data transforms
10
+ - Document AI setup and extraction
11
+ - unstructured ingestion and re-scan workflows
12
+ - deciding how a source dataset should enter Data Cloud
13
+ - classifying a dataset as `Profile`, `Engagement`, or `Other`
14
+ - using the Ingestion API send-data example after connector setup
15
+
16
+ ## Example requests
17
+
18
+ ```text
19
+ "Create a Data Cloud stream from Contact"
20
+ "Inspect the DLO created by this stream"
21
+ "Help me create a transform for ingested data"
22
+ "Re-run this SharePoint document stream so it picks up new files"
23
+ "Show me how to send records to Data Cloud through the Ingestion API"
24
+ ```
25
+
26
+ ## Common commands
27
+
28
+ ```bash
29
+ sf data360 data-stream list -o myorg 2>/dev/null
30
+ sf data360 data-stream create-from-object -o myorg --object Contact --connection SalesforceDotCom_Home 2>/dev/null
31
+ sf data360 data-stream run -o myorg --name Contact_Home 2>/dev/null
32
+ sf data360 dlo get -o myorg --name Contact_Home__dll 2>/dev/null
33
+ sf data360 transform list -o myorg 2>/dev/null
34
+ sf data360 connection run-existing -o myorg --name <connection-id> 2>/dev/null
35
+ ```
36
+
37
+ ## Key reminders
38
+
39
+ - confirm whether a dataset should be treated as `Profile`, `Engagement`, or `Other` before creating the stream
40
+ - `data-stream run` is the preferred re-scan path for unstructured document ingestion
41
+ - `connection run-existing` is a connection-level rerun and is not a full substitute for stream refresh
42
+ - some external database and Ingestion API stream-creation flows still require UI setup
43
+ - initial unstructured DLO setup can be richer in the UI than in a minimal CLI payload
44
+ - use the local [examples/ingestion-api/](examples/ingestion-api/) folder for the send-data flow
45
+
46
+ ## References
47
+
48
+ - [SKILL.md](SKILL.md)
49
+ - [examples/ingestion-api/README.md](examples/ingestion-api/README.md)
50
+ - [../orchestrating-datacloud/assets/definitions/data-stream.template.json](../orchestrating-datacloud/assets/definitions/data-stream.template.json)
51
+ - [CREDITS.md](CREDITS.md)
@@ -0,0 +1,191 @@
1
+ ---
2
+ name: preparing-datacloud
3
+ description: "Salesforce Data Cloud Prepare phase. Use this skill when the user creates or manages Data Cloud data streams, DLOs, transforms, or Document AI configurations. TRIGGER when: user creates or manages Data Cloud data streams, DLOs, transforms, or Document AI configurations, or asks about ingestion into Data Cloud. DO NOT TRIGGER when: the task is connection setup only (use connecting-datacloud), DMOs and identity resolution (use harmonizing-datacloud), or query/search work (use retrieving-datacloud)."
4
+ license: MIT
5
+ compatibility: "Requires an external community sf data360 CLI plugin and a Data Cloud-enabled org"
6
+ metadata:
7
+ version: "1.0"
8
+ ---
9
+
10
+ # preparing-datacloud: Data Cloud Prepare Phase
11
+
12
+ Use this skill when the user needs **ingestion and lake preparation work**: data streams, Data Lake Objects (DLOs), transforms, Document AI, unstructured ingestion, or the handoff from connector setup into a live stream.
13
+
14
+ ## When This Skill Owns the Task
15
+
16
+ Use `preparing-datacloud` when the work involves:
17
+ - `sf data360 data-stream *`
18
+ - `sf data360 dlo *`
19
+ - `sf data360 transform *`
20
+ - `sf data360 docai *`
21
+ - choosing how data should enter Data Cloud
22
+ - rerunning or rescanning ingestion after a source update
23
+ - preparing Ingestion API-backed streams after connector setup is complete
24
+
25
+ Delegate elsewhere when the user is:
26
+ - still creating/testing source connections → [connecting-datacloud](../connecting-datacloud/SKILL.md)
27
+ - mapping to DMOs or designing IR/data graphs → [harmonizing-datacloud](../harmonizing-datacloud/SKILL.md)
28
+ - querying ingested data → [retrieving-datacloud](../retrieving-datacloud/SKILL.md)
29
+
30
+ ---
31
+
32
+ ## Required Context to Gather First
33
+
34
+ Ask for or infer:
35
+ - target org alias
36
+ - source connection name
37
+ - source object / dataset / document source
38
+ - desired stream type
39
+ - DLO naming expectations
40
+ - whether the user is creating, updating, running, or deleting a stream
41
+ - whether the source is CRM, a database connector, an unstructured file source, or an Ingestion API feed
42
+
43
+ ---
44
+
45
+ ## Core Operating Rules
46
+
47
+ - Verify the external plugin runtime before running Data Cloud commands.
48
+ - Run the shared readiness classifier before mutating ingestion assets: `node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase prepare --json`.
49
+ - Prefer inspecting existing streams and DLOs before creating new ingestion assets.
50
+ - Suppress linked-plugin warning noise with `2>/dev/null` for normal usage.
51
+ - Treat DLO naming and field naming as Data Cloud-specific, not CRM-native.
52
+ - Confirm whether each dataset should be treated as `Profile`, `Engagement`, or `Other` before creating the stream.
53
+ - Distinguish stream-level refresh from connection-level reruns when working with unstructured sources.
54
+ - Use UI setup intentionally when initial stream or unstructured asset creation is platform-gated.
55
+ - Hand off to Harmonize only after ingestion assets are clearly healthy.
56
+
57
+ ---
58
+
59
+ ## Recommended Workflow
60
+
61
+ ### 1. Classify readiness for prepare work
62
+ ```bash
63
+ node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase prepare --json
64
+ ```
65
+
66
+ ### 2. Inspect existing ingestion assets
67
+ ```bash
68
+ sf data360 data-stream list -o <org> 2>/dev/null
69
+ sf data360 dlo list -o <org> 2>/dev/null
70
+ ```
71
+
72
+ ### 3. Confirm the stream category before creation
73
+ Use these rules when suggesting categories:
74
+
75
+ | Category | Use for | Typical requirement |
76
+ |---|---|---|
77
+ | `Profile` | person/entity records | primary key |
78
+ | `Engagement` | time-based events or interactions | primary key + event time field |
79
+ | `Other` | reference/configuration/supporting datasets | primary key |
80
+
81
+ When the source is ambiguous, ask the user explicitly whether the dataset should be treated as `Profile`, `Engagement`, or `Other`.
82
+
83
+ ### 4. Create or inspect streams intentionally
84
+ ```bash
85
+ sf data360 data-stream get -o <org> --name <stream> 2>/dev/null
86
+ sf data360 data-stream create-from-object -o <org> --object Contact --connection SalesforceDotCom_Home 2>/dev/null
87
+ sf data360 data-stream create -o <org> -f stream.json 2>/dev/null
88
+ sf data360 data-stream run -o <org> --name <stream> 2>/dev/null
89
+ ```
90
+
91
+ ### 5. Check DLO shape
92
+ ```bash
93
+ sf data360 dlo get -o <org> --name Contact_Home__dll 2>/dev/null
94
+ ```
95
+
96
+ ### 6. Choose the right refresh mechanism
97
+ Use the smaller refresh scope that matches the user goal:
98
+
99
+ ```bash
100
+ sf data360 data-stream run -o <org> --name <stream> 2>/dev/null
101
+ sf data360 connection run-existing -o <org> --name <connection-id> 2>/dev/null
102
+ ```
103
+
104
+ - `data-stream run` is the closest match to a stream-level refresh or re-scan.
105
+ - `connection run-existing` runs at the connection level and can be useful for some connector workflows, but it is not a reliable replacement for stream refresh on unstructured sources.
106
+ - For unstructured document connectors, prefer `data-stream run` when the goal is to re-scan newly added or changed files.
107
+
108
+ ### 7. Handle unstructured sources deliberately
109
+ For SharePoint-style document ingestion, a minimal unstructured DLO payload can look like:
110
+
111
+ ```json
112
+ {
113
+ "name": "my_udlo",
114
+ "label": "My UDLO",
115
+ "category": "Directory_Table",
116
+ "dataSource": {
117
+ "sourceType": "SF_DRIVE",
118
+ "directoryAndFilesDetails": [
119
+ {
120
+ "dirName": "SPUnstructuredDocument/<CONNECTION_ID>/<SITE_ID>",
121
+ "fileName": "*"
122
+ }
123
+ ],
124
+ "sourceConfig": {
125
+ "reservedPrefix": "$dcf_content$"
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ Use the UI for the first-time unstructured setup when the user needs the richer end-to-end pipeline. The UI path can seed additional document metadata fields and downstream assets that a bare CLI DLO create flow may not provision automatically.
132
+
133
+ ### 8. Use the local Ingestion API example for send-data workflows
134
+ For external systems pushing records into Data Cloud:
135
+
136
+ 1. create the connector in [connecting-datacloud](../connecting-datacloud/SKILL.md)
137
+ 2. upload the schema with `sf data360 connection schema-upsert`
138
+ 3. create the stream in the UI when required
139
+ 4. send records with the local example in `examples/ingestion-api/`
140
+
141
+ ```bash
142
+ cd examples/ingestion-api
143
+ cp .env.example .env
144
+ python3 send-data.py
145
+ ```
146
+
147
+ Key details:
148
+ - auth is a staged flow: JWT → Salesforce token → Data Cloud token
149
+ - the ingestion endpoint uses the tenant URL, not the Salesforce instance URL
150
+ - `202` means the payload was accepted for processing, not that records are queryable immediately
151
+ - validation failures often surface in the Problem Records DLO family
152
+
153
+ ### 9. Only then move into harmonization
154
+ Once the stream and DLO are healthy, hand off to [harmonizing-datacloud](../harmonizing-datacloud/SKILL.md).
155
+
156
+ ---
157
+
158
+ ## High-Signal Gotchas
159
+
160
+ - CRM-backed stream behavior is not the same as fully custom connector-framework ingestion.
161
+ - `sf data360 data-stream run` and `sf data360 connection run-existing` are not interchangeable; prefer stream-level refresh for unstructured rescans.
162
+ - `SFDC` streams sync on a platform-managed schedule; `data-stream run` is not the general control path for CRM connector refresh.
163
+ - Some external database connectors can be created via API while stream creation still requires UI flow or org-specific browser automation. Do not promise a pure CLI stream-creation path for every connector type.
164
+ - Initial SharePoint-style unstructured setup can be richer in the UI than in a minimal CLI DLO create flow.
165
+ - Stream deletion can also delete the associated DLO unless the delete mode says otherwise.
166
+ - DLO field naming differs from CRM field naming, including `__c` → `_c` transformations.
167
+ - Query DLO record counts with Data Cloud SQL instead of assuming list output is sufficient.
168
+ - `CdpDataStreams` means the stream module is gated for the current org/user; guide the user to provisioning/permissions review instead of retrying blindly.
169
+
170
+ ---
171
+
172
+ ## Output Format
173
+
174
+ ```text
175
+ Prepare task: <stream / dlo / transform / docai>
176
+ Source: <connection + object>
177
+ Target org: <alias>
178
+ Artifacts: <stream names / dlo names / json definitions>
179
+ Verification: <passed / partial / blocked>
180
+ Next step: <harmonize or retrieve>
181
+ ```
182
+
183
+ ---
184
+
185
+ ## References
186
+
187
+ - [README.md](README.md)
188
+ - [examples/ingestion-api/README.md](examples/ingestion-api/README.md)
189
+ - [../orchestrating-datacloud/assets/definitions/data-stream.template.json](../orchestrating-datacloud/assets/definitions/data-stream.template.json)
190
+ - [../orchestrating-datacloud/references/plugin-setup.md](../orchestrating-datacloud/references/plugin-setup.md)
191
+ - [../orchestrating-datacloud/references/feature-readiness.md](../orchestrating-datacloud/references/feature-readiness.md)
@@ -0,0 +1,8 @@
1
+ CONSUMER_KEY=<your consumer key from External Client App>
2
+ CONSUMER_SECRET=<your consumer secret>
3
+ SF_USERNAME=<your salesforce username>
4
+ SF_LOGIN_URL=https://login.salesforce.com
5
+ TENANT_URL=https://<tenant-id>.c360a.salesforce.com
6
+ PRIVATE_KEY_FILE=/path/to/server.key
7
+ CONNECTOR_NAME=Badge_Scanner
8
+ OBJECT_NAME=Badge_Scan
@@ -0,0 +1,48 @@
1
+ # Ingestion API example
2
+
3
+ This folder contains a minimal, public-safe example for sending records into Salesforce Data Cloud through the Ingestion API.
4
+
5
+ ## What this example assumes
6
+
7
+ Before running `send-data.py`, complete the connect/prepare setup steps:
8
+
9
+ 1. create an Ingestion API connector
10
+ 2. upload the schema with `sf data360 connection schema-upsert`
11
+ 3. create the corresponding data stream in the UI if your org requires that step
12
+
13
+ Related connector definitions live in:
14
+ - [../../../connecting-datacloud/examples/connections/ingest-api-connection.json](../../../connecting-datacloud/examples/connections/ingest-api-connection.json)
15
+ - [../../../connecting-datacloud/examples/connections/ingest-api-schema.json](../../../connecting-datacloud/examples/connections/ingest-api-schema.json)
16
+
17
+ ## Prerequisites
18
+
19
+ ```bash
20
+ pip install PyJWT cryptography requests
21
+ ```
22
+
23
+ ## Setup
24
+
25
+ ```bash
26
+ cd skills/preparing-datacloud/examples/ingestion-api
27
+ cp .env.example .env
28
+ # edit .env with your values
29
+ python3 send-data.py
30
+ ```
31
+
32
+ ## Environment variables
33
+
34
+ - `CONSUMER_KEY` — external client app consumer key
35
+ - `CONSUMER_SECRET` — external client app consumer secret if your auth flow needs it
36
+ - `SF_USERNAME` — Salesforce username used for JWT auth
37
+ - `SF_LOGIN_URL` — login host such as `https://login.salesforce.com`
38
+ - `TENANT_URL` — Data Cloud tenant URL such as `https://<tenant>.c360a.salesforce.com`
39
+ - `PRIVATE_KEY_FILE` — path to the JWT private key
40
+ - `CONNECTOR_NAME` — Ingestion API connector name
41
+ - `OBJECT_NAME` — uploaded schema object name
42
+
43
+ ## Notes
44
+
45
+ - auth is a staged flow: JWT → Salesforce token → Data Cloud token
46
+ - the ingestion endpoint uses the Data Cloud tenant URL, not the Salesforce instance URL
47
+ - `202` means the payload was accepted for processing
48
+ - validation failures often appear in the Problem Records DLO family
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Send data to Data Cloud through the Ingestion API.
4
+
5
+ Prerequisites:
6
+ pip install PyJWT cryptography requests
7
+
8
+ Usage:
9
+ 1. Copy .env.example to .env and fill in your values
10
+ 2. python3 send-data.py
11
+
12
+ See README.md in this folder for setup notes.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import os
18
+ import time
19
+ import uuid
20
+ from datetime import datetime, timezone
21
+ from pathlib import Path
22
+
23
+ import jwt
24
+ import requests
25
+
26
+
27
+ def load_env_file() -> None:
28
+ env_file = Path(__file__).parent / ".env"
29
+ if not env_file.exists():
30
+ return
31
+
32
+ for line in env_file.read_text().splitlines():
33
+ if "=" in line and not line.startswith("#"):
34
+ key, val = line.split("=", 1)
35
+ os.environ.setdefault(key.strip(), val.strip())
36
+
37
+
38
+ load_env_file()
39
+
40
+ CONSUMER_KEY = os.environ["CONSUMER_KEY"]
41
+ SF_USERNAME = os.environ["SF_USERNAME"]
42
+ SF_LOGIN_URL = os.environ.get("SF_LOGIN_URL", "https://login.salesforce.com")
43
+ TENANT_URL = os.environ["TENANT_URL"]
44
+ PRIVATE_KEY_FILE = os.environ["PRIVATE_KEY_FILE"]
45
+ CONNECTOR_NAME = os.environ["CONNECTOR_NAME"]
46
+ OBJECT_NAME = os.environ["OBJECT_NAME"]
47
+
48
+
49
+ def get_cdp_token() -> str:
50
+ """Authenticate: JWT -> Salesforce access token -> Data Cloud token."""
51
+ private_key = Path(PRIVATE_KEY_FILE).read_text()
52
+
53
+ claim = {
54
+ "iss": CONSUMER_KEY,
55
+ "sub": SF_USERNAME,
56
+ "aud": SF_LOGIN_URL,
57
+ "exp": int(time.time()) + 300,
58
+ }
59
+ assertion = jwt.encode(claim, private_key, algorithm="RS256")
60
+
61
+ token_data = requests.post(
62
+ f"{SF_LOGIN_URL}/services/oauth2/token",
63
+ data={
64
+ "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
65
+ "assertion": assertion,
66
+ },
67
+ timeout=60,
68
+ ).json()
69
+
70
+ if "access_token" not in token_data:
71
+ raise RuntimeError(f"Salesforce auth failed: {token_data}")
72
+
73
+ cdp_data = requests.post(
74
+ f"{token_data['instance_url']}/services/a360/token",
75
+ headers={"Content-Type": "application/x-www-form-urlencoded"},
76
+ data={
77
+ "grant_type": "urn:salesforce:grant-type:external:cdp",
78
+ "subject_token": token_data["access_token"],
79
+ "subject_token_type": "urn:ietf:params:oauth:token-type:access_token",
80
+ },
81
+ timeout=60,
82
+ ).json()
83
+
84
+ if "access_token" not in cdp_data:
85
+ raise RuntimeError(f"Data Cloud token exchange failed: {cdp_data}")
86
+
87
+ return cdp_data["access_token"]
88
+
89
+
90
+ def send_records(cdp_token: str, records: list[dict[str, str]]) -> tuple[int, str]:
91
+ """Send records to the Ingestion API."""
92
+ url = f"{TENANT_URL}/api/v1/ingest/sources/{CONNECTOR_NAME}/{OBJECT_NAME}"
93
+ response = requests.post(
94
+ url,
95
+ headers={
96
+ "Authorization": f"Bearer {cdp_token}",
97
+ "Content-Type": "application/json",
98
+ },
99
+ json={"data": records},
100
+ timeout=60,
101
+ )
102
+ return response.status_code, response.text
103
+
104
+
105
+ if __name__ == "__main__":
106
+ print("Authenticating...")
107
+ token = get_cdp_token()
108
+ print("Data Cloud token acquired")
109
+
110
+ records = [
111
+ {
112
+ "ScanId": str(uuid.uuid4()),
113
+ "EventId": "EVT-001",
114
+ "AttendeeId": "ATT-001",
115
+ "Scantime": datetime.now(timezone.utc).isoformat(),
116
+ "Room": "Main Hall",
117
+ },
118
+ {
119
+ "ScanId": str(uuid.uuid4()),
120
+ "EventId": "EVT-001",
121
+ "AttendeeId": "ATT-002",
122
+ "Scantime": datetime.now(timezone.utc).isoformat(),
123
+ "Room": "Workshop A",
124
+ },
125
+ {
126
+ "ScanId": str(uuid.uuid4()),
127
+ "EventId": "EVT-001",
128
+ "AttendeeId": "ATT-003",
129
+ "Scantime": datetime.now(timezone.utc).isoformat(),
130
+ "Room": "Workshop B",
131
+ },
132
+ ]
133
+
134
+ print(f"Sending {len(records)} records to {CONNECTOR_NAME}/{OBJECT_NAME}...")
135
+ status, body = send_records(token, records)
136
+ print(f"Response: {status} {body}")
137
+
138
+ if status == 202:
139
+ print("\nData accepted. Records typically appear in Data Cloud within a few minutes.")
140
+ print(
141
+ "Query with: sf data360 query sql -o <org> --sql 'SELECT * FROM \"<DLO_NAME>__dll\" LIMIT 10'"
142
+ )
143
+ else:
144
+ print("\nIngestion failed. Check the response above for details.")
@@ -0,0 +1,21 @@
1
+ # Credits & Acknowledgments
2
+
3
+ This skill integrates concepts and patterns from the Salesforce developer community and official Salesforce documentation. The goal is to teach Apex developers how to write efficient, maintainable SOQL using vanilla Apex patterns that don't require external package installation.
4
+
5
+ ---
6
+
7
+ ## Key Patterns Integrated
8
+
9
+ | Pattern | Integration |
10
+ |---------|-------------|
11
+ | Selector Layer architecture | `references/selector-patterns.md` |
12
+ | Bulkification and Map-based lookup | `assets/bulkified-query-pattern.cls` |
13
+ | SOQL anti-patterns catalog | `references/anti-patterns.md` |
14
+ | Query Plan analysis | `SKILL.md`, `assets/optimization-patterns.soql` |
15
+ | Field coverage validation | `references/field-coverage-rules.md` |
16
+
17
+ ---
18
+
19
+ ## Philosophy
20
+
21
+ This skill integrates **concepts and patterns** from community resources, not specific libraries as dependencies. All patterns produce vanilla Apex code that works in any Salesforce org without additional package installation.
@@ -0,0 +1,41 @@
1
+ # querying-soql
2
+
3
+ Salesforce SOQL query generation, optimization, and analysis skill with 100-point scoring. Convert natural language into performant SOQL and validate queries for security, selectivity, and governor-limit awareness.
4
+
5
+ ## Features
6
+
7
+ - **Natural Language to SOQL**: Convert requests into executable queries
8
+ - **Query Optimization**: Improve selectivity, LIMIT usage, and field selection
9
+ - **Relationship Queries**: Parent-child, child-parent, and polymorphic patterns
10
+ - **Security Guidance**: `WITH USER_MODE`, `WITH SECURITY_ENFORCED`, and Apex-safe usage
11
+ - **100-Point Scoring**: Performance, correctness, security, and readability checks
12
+
13
+ ## Quick Start
14
+
15
+ ### 1. Invoke the skill
16
+
17
+ ```
18
+ Skill: querying-soql
19
+ Request: "Find Accounts with open Opportunities created this quarter"
20
+ ```
21
+
22
+ ### 2. Typical use cases
23
+
24
+ - Generate SOQL from plain-English requirements
25
+ - Optimize slow or non-selective queries
26
+ - Build aggregates and relationship queries
27
+ - Validate queries before using them in Apex or CLI workflows
28
+
29
+ ## Documentation
30
+
31
+ - [SKILL.md](SKILL.md) - Core workflow and optimization guidance
32
+ - [references/query-optimization.md](references/query-optimization.md) - Selectivity and performance tuning
33
+ - [references/soql-syntax-reference.md](references/soql-syntax-reference.md) - Syntax, relationships, and aggregates
34
+ - [references/selector-patterns.md](references/selector-patterns.md) - Reusable Apex selector patterns
35
+ - [references/cli-commands.md](references/cli-commands.md) - sf CLI query execution examples
36
+
37
+ ## Related Skills
38
+
39
+ - `handling-sf-data` - For data creation/import/export workflows
40
+ - `generating-apex` - For inline SOQL inside Apex code
41
+ - `running-apex-tests` - For validating query behavior in tests
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: querying-soql
3
+ description: "SOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries."
4
+ license: MIT
5
+ metadata:
6
+ version: "1.1"
7
+ ---
8
+
9
+ # querying-soql: Salesforce SOQL Query Expert
10
+
11
+ Use this skill when the user needs **SOQL/SOSL authoring or optimization**: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance/safety improvements for Salesforce queries.
12
+
13
+ ## When This Skill Owns the Task
14
+
15
+ Use `querying-soql` when the work involves:
16
+ - `.soql` files
17
+ - query generation from natural language
18
+ - relationship queries and aggregate queries
19
+ - query optimization and selectivity analysis
20
+ - SOQL/SOSL syntax and governor-aware design
21
+
22
+ Delegate elsewhere when the user is:
23
+ - performing bulk data operations → [handling-sf-data](../handling-sf-data/SKILL.md)
24
+ - embedding query logic inside broader Apex implementation → [generating-apex](../generating-apex/SKILL.md)
25
+ - debugging via logs rather than query shape → [debugging-apex-logs](../debugging-apex-logs/SKILL.md)
26
+
27
+ ---
28
+
29
+ ## Required Context to Gather First
30
+
31
+ Ask for or infer:
32
+ - target object(s)
33
+ - fields needed
34
+ - filter criteria
35
+ - sort / limit requirements
36
+ - whether the query is for display, automation, reporting-like analysis, or Apex usage
37
+ - whether performance / selectivity is already a concern
38
+
39
+ ---
40
+
41
+ ## Recommended Workflow
42
+
43
+ ### 1. Generate the simplest correct query
44
+ Prefer:
45
+ - only needed fields
46
+ - clear WHERE criteria
47
+ - reasonable LIMIT when appropriate
48
+ - relationship depth only as deep as necessary
49
+
50
+ ### 2. Choose the right query shape
51
+ | Need | Default pattern |
52
+ |---|---|
53
+ | parent data from child | child-to-parent traversal |
54
+ | child rows from parent | subquery |
55
+ | counts / rollups | aggregate query |
56
+ | records with / without related rows | semi-join / anti-join |
57
+ | text search across objects | SOSL |
58
+
59
+ ### 3. Optimize for selectivity and safety
60
+ Check:
61
+ - indexed / selective filters
62
+ - no unnecessary fields
63
+ - no avoidable wildcard or scan-heavy patterns
64
+ - security enforcement expectations
65
+
66
+ ### 4. Validate execution path if needed
67
+ If the user wants runtime verification, hand off execution to:
68
+ - [handling-sf-data](../handling-sf-data/SKILL.md)
69
+
70
+ ---
71
+
72
+ ## High-Signal Rules
73
+
74
+ - never use `SELECT *` style thinking; query only required fields
75
+ - do not query inside loops in Apex contexts
76
+ - prefer filtering in SOQL rather than post-filtering in Apex
77
+ - use aggregates for counts and grouped summaries instead of loading unnecessary records
78
+ - evaluate wildcard usage carefully; leading wildcards often defeat indexes
79
+ - account for security mode / field access requirements when queries move into Apex
80
+
81
+ ---
82
+
83
+ ## Output Format
84
+
85
+ When finishing, report in this order:
86
+ 1. **Query purpose**
87
+ 2. **Final SOQL/SOSL**
88
+ 3. **Why this shape was chosen**
89
+ 4. **Optimization or security notes**
90
+ 5. **Execution suggestion if needed**
91
+
92
+ Suggested shape — use `references/soql-syntax-reference.md` for exact syntax:
93
+
94
+ ```
95
+ Query goal: <summary>
96
+ Query: <soql or sosl>
97
+ Design: <relationship / aggregate / filter choices>
98
+ Notes: <selectivity, limits, security, governor awareness>
99
+ Next step: <run in handling-sf-data or embed in Apex>
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Cross-Skill Integration
105
+
106
+ | Need | Delegate to | Reason |
107
+ |---|---|---|
108
+ | run the query against an org | [handling-sf-data](../handling-sf-data/SKILL.md) | execution and export |
109
+ | embed the query in services/selectors | [generating-apex](../generating-apex/SKILL.md) | implementation context |
110
+ | analyze slow-query symptoms from logs | [debugging-apex-logs](../debugging-apex-logs/SKILL.md) | runtime evidence |
111
+ | wire query-backed UI | [generating-lwc-components](../generating-lwc-components/SKILL.md) | frontend integration |
112
+
113
+ ---
114
+
115
+ ## Score Guide
116
+
117
+ | Score | Meaning |
118
+ |---|---|
119
+ | 90+ | production-optimized query |
120
+ | 80–89 | good query with minor improvements possible |
121
+ | 70–79 | functional but performance concerns remain |
122
+ | < 70 | needs revision before production use |
123
+
124
+ ---
125
+
126
+ ## Reference File Index
127
+
128
+ | File | When to read |
129
+ |------|-------------|
130
+ | `references/soql-syntax-reference.md` | Syntax, operators, date literals, relationship query patterns |
131
+ | `references/query-optimization.md` | Selectivity rules, indexing strategy, governor limits, security patterns |
132
+ | `references/soql-reference.md` | Quick reference — operators, date functions, aggregate functions, WITH clauses |
133
+ | `references/anti-patterns.md` | Common SOQL mistakes and their fixes — read before finalizing any query |
134
+ | `references/selector-patterns.md` | Apex selector layer patterns — read when embedding queries in Apex classes |
135
+ | `references/field-coverage-rules.md` | Field coverage validation — read when generating SOQL used inside Apex code |
136
+ | `references/cli-commands.md` | sf CLI query execution, bulk export, query plan commands |
137
+ | `assets/basic-queries.soql` | Starter query examples for common objects |
138
+ | `assets/relationship-queries.soql` | Parent-to-child and child-to-parent relationship query patterns |
139
+ | `assets/aggregate-queries.soql` | COUNT, SUM, GROUP BY, ROLLUP query patterns |
140
+ | `assets/optimization-patterns.soql` | Selective filter and index-aware query patterns |
141
+ | `assets/bulkified-query-pattern.cls` | Apex Map-based bulk query pattern for trigger contexts |
142
+ | `assets/selector-class.cls` | Full selector class implementation template |
143
+ | `scripts/post-tool-validate.py` | Post-write hook — runs static SOQL validation and live query plan analysis after `.soql` file edits |