@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,287 @@
1
+ <!-- Parent: debugging-apex-logs/SKILL.md -->
2
+ # Apex Benchmarking Guide
3
+
4
+ Performance testing is essential for writing efficient Apex code. This guide covers reliable benchmarking techniques and real-world performance data based on established Apex community practices and Salesforce governor limit behavior.
5
+
6
+ ---
7
+
8
+ ## Why Benchmark?
9
+
10
+ "Premature optimization is the root of all evil" - but **informed optimization** is essential. Benchmarking answers:
11
+
12
+ 1. **Which approach is faster?** (Loop styles, data structures)
13
+ 2. **Will this scale?** (200 records vs 10,000)
14
+ 3. **Where are the bottlenecks?** (CPU, heap, SOQL)
15
+
16
+ ---
17
+
18
+ ## Apex Benchmarking Technique
19
+
20
+ The recommended approach for reliable Apex performance testing:
21
+
22
+ ### The Pattern
23
+
24
+ ```apex
25
+ // Run in Anonymous Apex for consistent environment
26
+ Long startTime = System.currentTimeMillis();
27
+
28
+ // Your code to benchmark
29
+ for (Integer i = 0; i < 10000; i++) {
30
+ // Operation being tested
31
+ }
32
+
33
+ Long endTime = System.currentTimeMillis();
34
+ System.debug('Duration: ' + (endTime - startTime) + 'ms');
35
+ ```
36
+
37
+ ### Key Principles
38
+
39
+ | Principle | Why It Matters |
40
+ |-----------|----------------|
41
+ | **Use Anonymous Apex** | Consistent execution environment, no trigger interference |
42
+ | **Run Multiple Iterations** | Averages out JIT compilation and garbage collection |
43
+ | **Test at Scale** | 200 records ≠ 10,000 records in terms of performance |
44
+ | **Isolate the Operation** | Test one thing at a time |
45
+ | **Run Multiple Times** | First run often slower due to JIT compilation |
46
+
47
+ ### Example: Complete Benchmark
48
+
49
+ ```apex
50
+ // Comprehensive benchmark template
51
+ public class BenchmarkRunner {
52
+
53
+ public static void compareMethods() {
54
+ Integer iterations = 10000;
55
+
56
+ // Warm-up run (JIT compilation)
57
+ warmUp();
58
+
59
+ // Method A
60
+ Long startA = System.currentTimeMillis();
61
+ for (Integer i = 0; i < iterations; i++) {
62
+ methodA();
63
+ }
64
+ Long durationA = System.currentTimeMillis() - startA;
65
+
66
+ // Method B
67
+ Long startB = System.currentTimeMillis();
68
+ for (Integer i = 0; i < iterations; i++) {
69
+ methodB();
70
+ }
71
+ Long durationB = System.currentTimeMillis() - startB;
72
+
73
+ // Results
74
+ System.debug('Method A: ' + durationA + 'ms');
75
+ System.debug('Method B: ' + durationB + 'ms');
76
+ System.debug('Difference: ' + Math.abs(durationA - durationB) + 'ms');
77
+ System.debug('Winner: ' + (durationA < durationB ? 'Method A' : 'Method B'));
78
+ }
79
+
80
+ private static void warmUp() {
81
+ for (Integer i = 0; i < 100; i++) {
82
+ methodA();
83
+ methodB();
84
+ }
85
+ }
86
+
87
+ private static void methodA() { /* Implementation A */ }
88
+ private static void methodB() { /* Implementation B */ }
89
+ }
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Real-World Benchmark Results
95
+
96
+ ### String Concatenation vs String.join()
97
+
98
+ From documented Apex benchmarks:
99
+
100
+ | Method | Records | Duration | Result |
101
+ |--------|---------|----------|--------|
102
+ | String `+=` in loop | 1,750 | 11,767ms | CPU LIMIT HIT |
103
+ | `String.join()` | 7,500 | 539ms | Still running |
104
+ | **Improvement** | - | **22x faster** | - |
105
+
106
+ ```apex
107
+ // ❌ SLOW: String concatenation in loop (O(n²) string copies)
108
+ String result = '';
109
+ for (Account acc : accounts) {
110
+ result += acc.Name + '\n'; // Creates new string each time!
111
+ }
112
+
113
+ // ✅ FAST: String.join() (O(n) single allocation)
114
+ List<String> names = new List<String>();
115
+ for (Account acc : accounts) {
116
+ names.add(acc.Name);
117
+ }
118
+ String result = String.join(names, '\n');
119
+ ```
120
+
121
+ ### Loop Performance Comparison
122
+
123
+ From documented Apex loop benchmarks (10,000 iterations):
124
+
125
+ | Loop Type | Duration | Notes |
126
+ |-----------|----------|-------|
127
+ | While loop | ~0.4s | Fastest |
128
+ | Cached iterator | ~0.8s | Good alternative |
129
+ | For loop (index) | ~1.4s | Acceptable |
130
+ | Enhanced for-each | ~2.4s | Convenient but slower |
131
+ | Uncached iterator | CPU LIMIT | Avoid |
132
+
133
+ ```apex
134
+ // 🏆 FASTEST: While loop
135
+ Iterator<Account> iter = accounts.iterator();
136
+ while (iter.hasNext()) {
137
+ Account acc = iter.next();
138
+ // process
139
+ }
140
+
141
+ // ✅ GOOD: Traditional for loop
142
+ for (Integer i = 0; i < accounts.size(); i++) {
143
+ Account acc = accounts[i];
144
+ // process
145
+ }
146
+
147
+ // ⚠️ CONVENIENT BUT SLOWER: Enhanced for-each
148
+ for (Account acc : accounts) {
149
+ // process - OK for small collections
150
+ }
151
+ ```
152
+
153
+ ### Map vs List Lookup
154
+
155
+ | Operation | Complexity | 10,000 lookups |
156
+ |-----------|------------|----------------|
157
+ | List.contains() | O(n) | ~500ms |
158
+ | Set.contains() | O(1) | ~5ms |
159
+ | Map.containsKey() | O(1) | ~5ms |
160
+
161
+ ```apex
162
+ // ❌ SLOW: List lookup
163
+ List<Id> processedIds = new List<Id>();
164
+ for (Account acc : accounts) {
165
+ if (!processedIds.contains(acc.Id)) { // O(n) each time!
166
+ processedIds.add(acc.Id);
167
+ }
168
+ }
169
+
170
+ // ✅ FAST: Set lookup
171
+ Set<Id> processedIds = new Set<Id>();
172
+ for (Account acc : accounts) {
173
+ if (!processedIds.contains(acc.Id)) { // O(1) constant time
174
+ processedIds.add(acc.Id);
175
+ }
176
+ }
177
+ ```
178
+
179
+ ---
180
+
181
+ ## Governor Limit Ceilings
182
+
183
+ ### Official Limits
184
+
185
+ | Limit | Synchronous | Asynchronous |
186
+ |-------|-------------|--------------|
187
+ | CPU Time | 10,000 ms | 60,000 ms |
188
+ | Heap Size | 6 MB | 12 MB |
189
+ | SOQL Queries | 100 | 200 |
190
+ | DML Statements | 150 | 150 |
191
+
192
+ ### Practical Thresholds
193
+
194
+ | Limit | Warning (80%) | Critical (95%) |
195
+ |-------|---------------|----------------|
196
+ | CPU Time | 8,000 ms | 9,500 ms |
197
+ | Heap Size | 4.8 MB | 5.7 MB |
198
+ | SOQL Queries | 80 | 95 |
199
+
200
+ ### Runtime Limit Checking
201
+
202
+ ```apex
203
+ public void processWithSafety(List<Account> accounts) {
204
+ Integer cpuWarning = 8000;
205
+ Integer heapWarning = 4800000;
206
+
207
+ for (Account acc : accounts) {
208
+ // Check before each operation
209
+ if (Limits.getCpuTime() > cpuWarning) {
210
+ System.debug(LoggingLevel.WARN,
211
+ 'CPU approaching limit: ' + Limits.getCpuTime() + 'ms');
212
+ // Consider switching to async or chunking
213
+ break;
214
+ }
215
+
216
+ if (Limits.getHeapSize() > heapWarning) {
217
+ System.debug(LoggingLevel.WARN,
218
+ 'Heap approaching limit: ' + Limits.getHeapSize() + ' bytes');
219
+ break;
220
+ }
221
+
222
+ processAccount(acc);
223
+ }
224
+ }
225
+ ```
226
+
227
+ ---
228
+
229
+ ## Benchmarking Anti-Patterns
230
+
231
+ ### ❌ Don't Do These
232
+
233
+ | Anti-Pattern | Problem | Solution |
234
+ |--------------|---------|----------|
235
+ | Testing in triggers | Inconsistent environment | Use Anonymous Apex |
236
+ | Single iteration | JIT variance affects results | Run 1000+ iterations |
237
+ | Testing with 10 records | Doesn't reveal O(n²) issues | Test with 200+ records |
238
+ | Ignoring warm-up | First run skewed by JIT | Add warm-up phase |
239
+ | Mixing operations | Can't isolate bottleneck | Test one thing at a time |
240
+
241
+ ---
242
+
243
+ ## Benchmarking Checklist
244
+
245
+ Before optimizing, verify:
246
+
247
+ - [ ] Ran benchmark multiple times (3-5 runs)
248
+ - [ ] Used 1000+ iterations for micro-benchmarks
249
+ - [ ] Tested with production-scale data (200+ records)
250
+ - [ ] Included warm-up phase
251
+ - [ ] Ran in Anonymous Apex (not test context)
252
+ - [ ] Compared both approaches fairly
253
+ - [ ] Considered readability trade-offs
254
+
255
+ ---
256
+
257
+ ## When NOT to Optimize
258
+
259
+ Sometimes clarity beats performance:
260
+
261
+ ```apex
262
+ // More readable, negligible performance difference for small collections
263
+ for (Account acc : accounts) {
264
+ acc.Description = acc.Name + ' - Updated';
265
+ }
266
+
267
+ // vs micro-optimized but harder to read
268
+ Iterator<Account> iter = accounts.iterator();
269
+ while (iter.hasNext()) {
270
+ Account acc = iter.next();
271
+ acc.Description = acc.Name + ' - Updated';
272
+ }
273
+ ```
274
+
275
+ **Rule of thumb**: Optimize when:
276
+ 1. Processing 200+ records regularly
277
+ 2. Approaching governor limits
278
+ 3. User experience is affected
279
+ 4. Benchmarks show measurable improvement
280
+
281
+ ---
282
+
283
+ ## Related Resources
284
+
285
+ - [assets/benchmarking-template.cls](../assets/benchmarking-template.cls) - Ready-to-use benchmark template
286
+ - [assets/cpu-heap-optimization.cls](../assets/cpu-heap-optimization.cls) - Optimization patterns
287
+ - [Apex Log Analyzer](./log-analysis-tools.md) - Visual performance analysis
@@ -0,0 +1,368 @@
1
+ <!-- Parent: debugging-apex-logs/SKILL.md -->
2
+ # Salesforce CLI Debug Commands Reference
3
+
4
+ ## Quick Reference
5
+
6
+ | Task | Command |
7
+ |------|---------|
8
+ | List recent logs | `sf apex list log --target-org my-org` |
9
+ | Get specific log | `sf apex get log --log-id 07Lxx0000000000` |
10
+ | Stream real-time | `sf apex tail log --target-org my-org` |
11
+ | Delete log | `sf data delete record --sobject ApexLog --record-id <id> --target-org my-org` |
12
+
13
+ ---
14
+
15
+ ## Log Retrieval
16
+
17
+ ### List Available Logs
18
+
19
+ ```bash
20
+ # List all logs for current user
21
+ sf apex list log --target-org my-org
22
+
23
+ # JSON output for parsing
24
+ sf apex list log --target-org my-org --json
25
+ ```
26
+
27
+ **Output Fields:**
28
+ - `Id` - Log ID for retrieval
29
+ - `LogUser.Name` - Who generated the log
30
+ - `Operation` - What triggered the log
31
+ - `Status` - Success/Failure
32
+ - `LogLength` - Size in bytes
33
+ - `StartTime` - When it was generated
34
+
35
+ ### Get Specific Log
36
+
37
+ ```bash
38
+ # Download log by ID
39
+ sf apex get log \
40
+ --log-id 07Lxx0000000000AAA \
41
+ --target-org my-org
42
+
43
+ # Save to file
44
+ sf apex get log \
45
+ --log-id 07Lxx0000000000AAA \
46
+ --target-org my-org \
47
+ --output-dir ./logs
48
+
49
+ # Get most recent log
50
+ sf apex list log --target-org my-org --json | \
51
+ jq -r '.result[0].Id' | \
52
+ xargs -I {} sf apex get log --log-id {} --target-org my-org
53
+ ```
54
+
55
+ ### Stream Logs Real-Time
56
+
57
+ ```bash
58
+ # Tail logs with color highlighting
59
+ sf apex tail log --target-org my-org --color
60
+
61
+ # Tail with color highlighting
62
+ sf apex tail log \
63
+ --target-org my-org \
64
+ --color
65
+ # Note: Debug levels are configured via TraceFlag records in Setup, not CLI flags
66
+
67
+ # Tail with skip flag (don't show historical logs)
68
+ sf apex tail log --target-org my-org --skip-trace-flag
69
+ ```
70
+
71
+ ---
72
+
73
+ ## Log Management
74
+
75
+ ### Delete Logs
76
+
77
+ > **Note**: `sf apex log delete` does not exist in sf CLI v2. Use `sf data delete record` instead.
78
+
79
+ ```bash
80
+ # Delete specific log
81
+ sf data delete record \
82
+ --sobject ApexLog \
83
+ --record-id 07Lxx0000000000AAA \
84
+ --target-org my-org
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Debug Level Configuration
90
+
91
+ ### Using Trace Flags
92
+
93
+ Trace flags control what gets logged and for which users.
94
+
95
+ ```bash
96
+ # Create trace flag for specific user
97
+ sf data create record \
98
+ --sobject TraceFlag \
99
+ --values "TracedEntityId='005xx0000001234' LogType='USER_DEBUG' DebugLevelId='7dlxx0000000000' StartDate='2025-01-01T00:00:00Z' ExpirationDate='2025-01-02T00:00:00Z'" \
100
+ --target-org my-org
101
+
102
+ # Query existing trace flags
103
+ sf data query \
104
+ --query "SELECT Id, TracedEntityId, DebugLevel.MasterLabel, ExpirationDate FROM TraceFlag" \
105
+ --target-org my-org
106
+
107
+ # Delete trace flag
108
+ sf data delete record \
109
+ --sobject TraceFlag \
110
+ --record-id 7tfxx0000000000AAA \
111
+ --target-org my-org
112
+ ```
113
+
114
+ ### Debug Levels
115
+
116
+ ```bash
117
+ # List available debug levels
118
+ sf data query \
119
+ --query "SELECT Id, MasterLabel, ApexCode, ApexProfiling, Callout, Database, System, Workflow FROM DebugLevel" \
120
+ --target-org my-org
121
+
122
+ # Create custom debug level
123
+ sf data create record \
124
+ --sobject DebugLevel \
125
+ --values "MasterLabel='PerformanceDebug' DeveloperName='PerformanceDebug' ApexCode='FINE' ApexProfiling='FINEST' Database='FINE' System='DEBUG'" \
126
+ --target-org my-org
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Advanced Usage
132
+
133
+ ### Execute Anonymous with Logging
134
+
135
+ ```bash
136
+ # Run anonymous Apex and capture log
137
+ echo "System.debug('Test'); Account a = [SELECT Id FROM Account LIMIT 1];" | \
138
+ sf apex run --target-org my-org
139
+
140
+ # Run from file
141
+ sf apex run \
142
+ --file ./scripts/debug-script.apex \
143
+ --target-org my-org
144
+
145
+ # Get the log from that execution
146
+ sf apex list log --target-org my-org --json | \
147
+ jq -r '.result[0].Id' | \
148
+ xargs -I {} sf apex get log --log-id {} --target-org my-org
149
+ ```
150
+
151
+ ### Query Plan Analysis
152
+
153
+ ```bash
154
+ # Analyze query plan using Tooling API
155
+ sf data query \
156
+ --query "SELECT Id FROM Account WHERE Name = 'Test'" \
157
+ --target-org my-org \
158
+ --use-tooling-api
159
+ # Note: --explain does not exist. Use REST API for query plans:
160
+ # GET /services/data/v66.0/query/?explain=SELECT+Id+FROM+Account+WHERE+Name='Test'
161
+ ```
162
+
163
+ ### Log Analysis with grep
164
+
165
+ ```bash
166
+ # Find SOQL queries in log
167
+ sf apex get log --log-id 07Lxx0000000000 --target-org my-org | \
168
+ rg "SOQL_EXECUTE"
169
+
170
+ # Count SOQL queries
171
+ sf apex get log --log-id 07Lxx0000000000 --target-org my-org | \
172
+ rg -c "SOQL_EXECUTE_BEGIN"
173
+
174
+ # Find exceptions
175
+ sf apex get log --log-id 07Lxx0000000000 --target-org my-org | \
176
+ rg "EXCEPTION_THROWN|FATAL_ERROR"
177
+
178
+ # Find limit usage
179
+ sf apex get log --log-id 07Lxx0000000000 --target-org my-org | \
180
+ rg "LIMIT_USAGE"
181
+
182
+ # Find slow operations (method timing)
183
+ sf apex get log --log-id 07Lxx0000000000 --target-org my-org | \
184
+ rg "METHOD_EXIT.*\|([0-9]{4,})\|"
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Automation Scripts
190
+
191
+ ### Save and Analyze Latest Log
192
+
193
+ ```bash
194
+ #!/bin/bash
195
+ # save-latest-log.sh
196
+
197
+ ORG_ALIAS=${1:-"my-org"}
198
+ OUTPUT_DIR=${2:-"./logs"}
199
+
200
+ mkdir -p $OUTPUT_DIR
201
+
202
+ # Get latest log ID
203
+ LOG_ID=$(sf apex list log --target-org $ORG_ALIAS --json | jq -r '.result[0].Id')
204
+
205
+ if [ "$LOG_ID" == "null" ]; then
206
+ echo "No logs found"
207
+ exit 1
208
+ fi
209
+
210
+ # Save log
211
+ FILENAME="$OUTPUT_DIR/$(date +%Y%m%d_%H%M%S)_$LOG_ID.log"
212
+ sf apex get log --log-id $LOG_ID --target-org $ORG_ALIAS > $FILENAME
213
+
214
+ echo "Log saved to: $FILENAME"
215
+
216
+ # Quick analysis
217
+ echo ""
218
+ echo "=== QUICK ANALYSIS ==="
219
+ echo "SOQL Queries: $(rg -c 'SOQL_EXECUTE_BEGIN' $FILENAME || echo 0)"
220
+ echo "DML Statements: $(rg -c 'DML_BEGIN' $FILENAME || echo 0)"
221
+ echo "Exceptions: $(rg -c 'EXCEPTION_THROWN|FATAL_ERROR' $FILENAME || echo 0)"
222
+ ```
223
+
224
+ ### Monitor for Errors
225
+
226
+ ```bash
227
+ #!/bin/bash
228
+ # monitor-errors.sh
229
+
230
+ ORG_ALIAS=${1:-"my-org"}
231
+
232
+ echo "Monitoring $ORG_ALIAS for errors..."
233
+ echo "Press Ctrl+C to stop"
234
+
235
+ sf apex tail log --target-org $ORG_ALIAS --color 2>&1 | \
236
+ while read line; do
237
+ if echo "$line" | rg -q "EXCEPTION|FATAL_ERROR|LimitException"; then
238
+ echo "🔴 ERROR DETECTED: $line"
239
+ # Optional: Send alert
240
+ # osascript -e 'display notification "Error in Salesforce" with title "debugging-apex-logs"'
241
+ fi
242
+ done
243
+ ```
244
+
245
+ ### Bulk Log Cleanup
246
+
247
+ ```bash
248
+ #!/bin/bash
249
+ # cleanup-logs.sh
250
+
251
+ ORG_ALIAS=${1:-"my-org"}
252
+ DAYS_OLD=${2:-7}
253
+
254
+ echo "Deleting logs older than $DAYS_OLD days from $ORG_ALIAS..."
255
+
256
+ # Get old log IDs
257
+ OLD_LOGS=$(sf data query \
258
+ --query "SELECT Id FROM ApexLog WHERE StartTime < LAST_N_DAYS:$DAYS_OLD" \
259
+ --target-org $ORG_ALIAS \
260
+ --json | jq -r '.result.records[].Id')
261
+
262
+ COUNT=0
263
+ for LOG_ID in $OLD_LOGS; do
264
+ sf data delete record --sobject ApexLog --record-id $LOG_ID --target-org $ORG_ALIAS --json > /dev/null
265
+ ((COUNT++))
266
+ done
267
+
268
+ echo "Deleted $COUNT logs"
269
+ ```
270
+
271
+ ---
272
+
273
+ ## Troubleshooting
274
+
275
+ ### No Logs Appearing
276
+
277
+ 1. **Check trace flags exist:**
278
+ ```bash
279
+ sf data query \
280
+ --query "SELECT Id, TracedEntityId, ExpirationDate FROM TraceFlag WHERE ExpirationDate > TODAY" \
281
+ --target-org my-org
282
+ ```
283
+
284
+ 2. **Check log retention:**
285
+ ```bash
286
+ sf data query \
287
+ --query "SELECT Id, StartTime FROM ApexLog ORDER BY StartTime DESC LIMIT 5" \
288
+ --target-org my-org
289
+ ```
290
+
291
+ 3. **Verify user has API access:**
292
+ - User must have "API Enabled" permission
293
+ - User must have "Author Apex" for trace flags
294
+
295
+ ### Log Too Large
296
+
297
+ Logs over 2MB are truncated. Solutions:
298
+
299
+ 1. **Reduce debug level:**
300
+ ```
301
+ ApexCode: DEBUG → INFO
302
+ ApexProfiling: FINEST → FINE
303
+ ```
304
+
305
+ 2. **Focus on specific operation:**
306
+ - Create trace flag just before the operation
307
+ - Delete after capturing
308
+
309
+ 3. **Use targeted logging:**
310
+ - Add `System.debug()` only where needed
311
+ - Use `LoggingLevel.ERROR` for critical info
312
+
313
+ ### Logs Not Persisting
314
+
315
+ Default log retention is 24 hours. To keep logs longer:
316
+
317
+ ```bash
318
+ # Export log to file immediately
319
+ sf apex get log --log-id 07Lxx0000000000 --target-org my-org > ./saved-log.txt
320
+ ```
321
+
322
+ ---
323
+
324
+ ## Integration with debugging-apex-logs Skill
325
+
326
+ The debugging-apex-logs skill automatically:
327
+
328
+ 1. **Fetches logs** when you run `sf apex get log` or `sf apex tail log`
329
+ 2. **Parses content** for SOQL in loops, DML in loops, exceptions
330
+ 3. **Displays analysis** with governor limit usage
331
+ 4. **Suggests fixes** using sf-apex skill integration
332
+
333
+ Example workflow:
334
+ ```bash
335
+ # Run a test that generates a log
336
+ sf apex run test --class-names MyTestClass --target-org my-org
337
+
338
+ # Get the log (debugging-apex-logs hook auto-analyzes)
339
+ sf apex list log --target-org my-org --json | \
340
+ jq -r '.result[0].Id' | \
341
+ xargs -I {} sf apex get log --log-id {} --target-org my-org
342
+ ```
343
+
344
+ The hook will output analysis like:
345
+ ```
346
+ ============================================================
347
+ 🔍 DEBUG LOG ANALYSIS
348
+ ============================================================
349
+
350
+ 🔴 CRITICAL ISSUES
351
+ ------------------------------------------------------------
352
+ • SOQL in loop detected: 50 queries executed inside loops
353
+ • CPU limit critical: 9500/10000ms (95.0%)
354
+
355
+ 📊 GOVERNOR LIMIT USAGE
356
+ ------------------------------------------------------------
357
+ ✅ SOQL Queries: 50/100 (50.0%)
358
+ ✅ DML Statements: 25/150 (16.7%)
359
+ 🔴 CPU Time (ms): 9500/10000 (95.0%)
360
+
361
+ 🤖 AGENTIC FIX RECOMMENDATIONS
362
+ ============================================================
363
+
364
+ For SOQL in loop:
365
+ 1. Move query BEFORE the loop
366
+ 2. Store results in Map<Id, SObject>
367
+ 3. Access from Map inside loop
368
+ ```
@@ -0,0 +1,68 @@
1
+ # Common Debug Log Issues
2
+
3
+ ## SOQL in loop
4
+
5
+ **Signals**
6
+ - repeating `SOQL_EXECUTE_BEGIN`
7
+ - query appears inside repeated method path
8
+
9
+ **Fix pattern**
10
+ - query once outside the loop
11
+ - use `Map<Id, SObject>` or grouped collections
12
+
13
+ ## DML in loop
14
+
15
+ **Signals**
16
+ - repeated `DML_BEGIN`
17
+ - high DML statement count for small transactions
18
+
19
+ **Fix pattern**
20
+ - collect changes
21
+ - do one bulk DML operation
22
+
23
+ ## Non-selective query
24
+
25
+ **Signals**
26
+ - high rows scanned
27
+ - slow query timing
28
+ - table-scan indicators
29
+
30
+ **Fix pattern**
31
+ - add indexed filters
32
+ - reduce scope
33
+ - use query-plan guidance
34
+
35
+ ## CPU pressure
36
+
37
+ **Signals**
38
+ - CPU usage trending toward sync limit
39
+ - repeated expensive helper methods
40
+ - nested loops / repeated string work
41
+
42
+ **Fix pattern**
43
+ - reduce algorithmic complexity
44
+ - cache repeated work
45
+ - move heavy processing async where appropriate
46
+
47
+ ## Heap pressure
48
+
49
+ **Signals**
50
+ - large collection allocations
51
+ - heap usage approaching sync limit
52
+
53
+ **Fix pattern**
54
+ - use SOQL for-loops
55
+ - reduce in-memory object size
56
+ - clear collections when done
57
+
58
+ ## Null pointer / unhandled exceptions
59
+
60
+ **Signals**
61
+ - `EXCEPTION_THROWN`
62
+ - `FATAL_ERROR`
63
+ - clear stack trace with line numbers
64
+
65
+ **Fix pattern**
66
+ - guard null values
67
+ - make assumptions explicit
68
+ - improve result handling for empty query results