@salesforce/afv-skills 1.7.5 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/activating-datacloud/CREDITS.md +5 -0
- package/skills/activating-datacloud/README.md +39 -0
- package/skills/activating-datacloud/SKILL.md +118 -0
- package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
- package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
- package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
- package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
- package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
- package/skills/building-omnistudio-callable-apex/README.md +80 -0
- package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
- package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
- package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
- package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
- package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
- package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
- package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
- package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
- package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
- package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
- package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
- package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
- package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
- package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
- package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
- package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
- package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
- package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
- package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
- package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
- package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
- package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
- package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
- package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
- package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
- package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
- package/skills/building-sf-integrations/CREDITS.md +5 -0
- package/skills/building-sf-integrations/README.md +95 -0
- package/skills/building-sf-integrations/SKILL.md +192 -0
- package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
- package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
- package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
- package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
- package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
- package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
- package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
- package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
- package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
- package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
- package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
- package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
- package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
- package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
- package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
- package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
- package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
- package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
- package/skills/building-sf-integrations/references/cli-reference.md +94 -0
- package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
- package/skills/building-sf-integrations/references/event-patterns.md +838 -0
- package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
- package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
- package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
- package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
- package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
- package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
- package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
- package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
- package/skills/building-sf-integrations/scripts/README.md +100 -0
- package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
- package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
- package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
- package/skills/building-ui-bundle-frontend/SKILL.md +2 -0
- package/skills/configuring-connected-apps/CREDITS.md +3 -0
- package/skills/configuring-connected-apps/README.md +99 -0
- package/skills/configuring-connected-apps/SKILL.md +224 -0
- package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
- package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
- package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
- package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
- package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
- package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
- package/skills/configuring-connected-apps/references/example-usage.md +256 -0
- package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
- package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
- package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
- package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
- package/skills/connecting-datacloud/CREDITS.md +5 -0
- package/skills/connecting-datacloud/README.md +59 -0
- package/skills/connecting-datacloud/SKILL.md +155 -0
- package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
- package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
- package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
- package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
- package/skills/debugging-apex-logs/CREDITS.md +22 -0
- package/skills/debugging-apex-logs/README.md +74 -0
- package/skills/debugging-apex-logs/SKILL.md +172 -0
- package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
- package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
- package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
- package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
- package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
- package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
- package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
- package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
- package/skills/debugging-apex-logs/references/common-issues.md +68 -0
- package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
- package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
- package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
- package/skills/deploying-metadata/CREDITS.md +25 -0
- package/skills/deploying-metadata/README.md +104 -0
- package/skills/deploying-metadata/SKILL.md +214 -0
- package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
- package/skills/deploying-metadata/assets/package.xml +121 -0
- package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
- package/skills/deploying-metadata/references/deploy.sh +73 -0
- package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
- package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
- package/skills/deploying-metadata/references/orchestration.md +183 -0
- package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
- package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
- package/skills/deploying-omnistudio-datapacks/README.md +88 -0
- package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
- package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
- package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
- package/skills/deploying-ui-bundle/SKILL.md +2 -0
- package/skills/developing-agentforce/SKILL.md +1 -1
- package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
- package/skills/developing-agentforce/references/actions-reference.md +8 -8
- package/skills/fetching-salesforce-docs/README.md +66 -0
- package/skills/fetching-salesforce-docs/SKILL.md +209 -0
- package/skills/fetching-salesforce-docs/requirements.txt +2 -0
- package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
- package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
- package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
- package/skills/generating-apex/CREDITS.md +1 -26
- package/skills/generating-apex/SKILL.md +4 -2
- package/skills/generating-apex-test/CREDITS.md +2 -27
- package/skills/generating-apex-test/SKILL.md +3 -1
- package/skills/generating-custom-application/SKILL.md +2 -0
- package/skills/generating-custom-field/SKILL.md +3 -1
- package/skills/generating-custom-lightning-type/SKILL.md +2 -0
- package/skills/generating-custom-object/SKILL.md +3 -1
- package/skills/generating-custom-tab/SKILL.md +3 -1
- package/skills/generating-flexipage/SKILL.md +2 -0
- package/skills/generating-flow/SKILL.md +2 -0
- package/skills/generating-lightning-app/SKILL.md +1 -1
- package/skills/generating-list-view/SKILL.md +2 -0
- package/skills/generating-lwc-components/CREDITS.md +5 -0
- package/skills/generating-lwc-components/README.md +126 -0
- package/skills/generating-lwc-components/SKILL.md +191 -0
- package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
- package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
- package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
- package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
- package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
- package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
- package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
- package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
- package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
- package/skills/generating-lwc-components/references/advanced-features.md +108 -0
- package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
- package/skills/generating-lwc-components/references/cli-commands.md +545 -0
- package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
- package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
- package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
- package/skills/generating-lwc-components/references/lms-guide.md +860 -0
- package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
- package/skills/generating-lwc-components/references/performance-guide.md +861 -0
- package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
- package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
- package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
- package/skills/generating-lwc-components/references/state-management.md +642 -0
- package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
- package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
- package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
- package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
- package/skills/generating-mermaid-diagrams/README.md +114 -0
- package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
- package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
- package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
- package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
- package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
- package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
- package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
- package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
- package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
- package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
- package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
- package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
- package/skills/generating-ui-bundle-features/SKILL.md +2 -0
- package/skills/generating-ui-bundle-metadata/SKILL.md +2 -0
- package/skills/generating-ui-bundle-site/SKILL.md +2 -0
- package/skills/generating-validation-rule/SKILL.md +2 -0
- package/skills/generating-visual-diagrams/CREDITS.md +80 -0
- package/skills/generating-visual-diagrams/README.md +83 -0
- package/skills/generating-visual-diagrams/SKILL.md +208 -0
- package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
- package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
- package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
- package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
- package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
- package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
- package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
- package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
- package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
- package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
- package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
- package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
- package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
- package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
- package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
- package/skills/handling-sf-data/CREDITS.md +5 -0
- package/skills/handling-sf-data/README.md +112 -0
- package/skills/handling-sf-data/SKILL.md +235 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
- package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
- package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
- package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
- package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
- package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
- package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
- package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
- package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
- package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
- package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
- package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
- package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
- package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
- package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
- package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
- package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
- package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
- package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
- package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
- package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
- package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
- package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
- package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
- package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
- package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
- package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
- package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
- package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
- package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
- package/skills/handling-sf-data/references/orchestration.md +174 -0
- package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
- package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
- package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
- package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
- package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
- package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
- package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
- package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
- package/skills/harmonizing-datacloud/CREDITS.md +3 -0
- package/skills/harmonizing-datacloud/README.md +31 -0
- package/skills/harmonizing-datacloud/SKILL.md +117 -0
- package/skills/implementing-ui-bundle-agentforce-conversation-client/SKILL.md +1 -1
- package/skills/implementing-ui-bundle-file-upload/SKILL.md +2 -0
- package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
- package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
- package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
- package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
- package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
- package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
- package/skills/observing-agentforce/SKILL.md +1 -1
- package/skills/orchestrating-datacloud/CREDITS.md +15 -0
- package/skills/orchestrating-datacloud/README.md +129 -0
- package/skills/orchestrating-datacloud/SKILL.md +236 -0
- package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
- package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
- package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
- package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
- package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
- package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
- package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
- package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
- package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
- package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
- package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
- package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
- package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
- package/skills/preparing-datacloud/CREDITS.md +7 -0
- package/skills/preparing-datacloud/README.md +51 -0
- package/skills/preparing-datacloud/SKILL.md +191 -0
- package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
- package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
- package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
- package/skills/querying-soql/CREDITS.md +21 -0
- package/skills/querying-soql/README.md +41 -0
- package/skills/querying-soql/SKILL.md +143 -0
- package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
- package/skills/querying-soql/assets/basic-queries.soql +188 -0
- package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
- package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
- package/skills/querying-soql/assets/relationship-queries.soql +203 -0
- package/skills/querying-soql/assets/selector-class.cls +219 -0
- package/skills/querying-soql/references/anti-patterns.md +348 -0
- package/skills/querying-soql/references/cli-commands.md +358 -0
- package/skills/querying-soql/references/field-coverage-rules.md +514 -0
- package/skills/querying-soql/references/query-optimization.md +142 -0
- package/skills/querying-soql/references/selector-patterns.md +479 -0
- package/skills/querying-soql/references/soql-reference.md +227 -0
- package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
- package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
- package/skills/retrieving-datacloud/CREDITS.md +7 -0
- package/skills/retrieving-datacloud/README.md +44 -0
- package/skills/retrieving-datacloud/SKILL.md +120 -0
- package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
- package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
- package/skills/running-apex-tests/CREDITS.md +22 -0
- package/skills/running-apex-tests/README.md +94 -0
- package/skills/running-apex-tests/SKILL.md +158 -0
- package/skills/running-apex-tests/assets/basic-test.cls +169 -0
- package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
- package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
- package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
- package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
- package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
- package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
- package/skills/running-apex-tests/references/cli-commands.md +289 -0
- package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
- package/skills/running-apex-tests/references/performance-optimization.md +283 -0
- package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
- package/skills/running-apex-tests/references/test-patterns.md +154 -0
- package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
- package/skills/segmenting-datacloud/CREDITS.md +3 -0
- package/skills/segmenting-datacloud/README.md +36 -0
- package/skills/segmenting-datacloud/SKILL.md +115 -0
- package/skills/switching-org/SKILL.md +1 -1
- package/skills/testing-agentforce/SKILL.md +1 -1
- package/skills/uplifting-components-to-slds2/SKILL.md +3 -1
- package/skills/using-ui-bundle-salesforce-data/SKILL.md +2 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: retrieving-datacloud
|
|
3
|
+
description: "Salesforce Data Cloud Retrieve phase. Use this skill when the user runs Data Cloud SQL, async queries, vector search, search-index workflows, or metadata introspection for Data Cloud objects. TRIGGER when: user runs Data Cloud SQL, describe, async queries, vector search, search-index workflows, or metadata introspection for Data Cloud objects. DO NOT TRIGGER when: the task is standard CRM SOQL (use querying-soql), segment creation or calculated insight design (use segmenting-datacloud), or STDM/session tracing/parquet analysis (use observing-agentforce)."
|
|
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
|
+
# retrieving-datacloud: Data Cloud Retrieve Phase
|
|
11
|
+
|
|
12
|
+
Use this skill when the user needs **query, search, and metadata introspection** for Data Cloud: sync SQL, paginated SQL, async query workflows, table describe, vector search, hybrid search, or search index operations.
|
|
13
|
+
|
|
14
|
+
## When This Skill Owns the Task
|
|
15
|
+
|
|
16
|
+
Use `retrieving-datacloud` when the work involves:
|
|
17
|
+
- `sf data360 query *`
|
|
18
|
+
- `sf data360 search-index *`
|
|
19
|
+
- `sf data360 metadata *`
|
|
20
|
+
- `sf data360 profile *` or `sf data360 insight *` inspection
|
|
21
|
+
- understanding Data Cloud SQL results or query shape
|
|
22
|
+
|
|
23
|
+
Delegate elsewhere when the user is:
|
|
24
|
+
- writing standard CRM SOQL only → [querying-soql](../querying-soql/SKILL.md)
|
|
25
|
+
- designing segment or calculated insight assets → [segmenting-datacloud](../segmenting-datacloud/SKILL.md)
|
|
26
|
+
- analyzing STDM/session tracing/parquet telemetry → [observing-agentforce](../observing-agentforce/SKILL.md)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Required Context to Gather First
|
|
31
|
+
|
|
32
|
+
Ask for or infer:
|
|
33
|
+
- target org alias
|
|
34
|
+
- whether the user needs quick count, medium result set, large export, schema inspection, or semantic search
|
|
35
|
+
- table/index name if known
|
|
36
|
+
- whether the task is read-only SQL or search-index lifecycle management
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Core Operating Rules
|
|
41
|
+
|
|
42
|
+
- Treat Data Cloud SQL as its own query language, not SOQL.
|
|
43
|
+
- Run the shared readiness classifier before relying on query/search surfaces: `node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase retrieve --json`.
|
|
44
|
+
- Use describe before guessing columns.
|
|
45
|
+
- Prefer `sqlv2` or async query flows for larger result sets.
|
|
46
|
+
- Use vector search or hybrid search only when the search index lifecycle is healthy.
|
|
47
|
+
- Keep STDM/parquet/session-tracing workflows out of this skill family.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Recommended Workflow
|
|
52
|
+
|
|
53
|
+
### 1. Classify readiness for retrieve work
|
|
54
|
+
```bash
|
|
55
|
+
node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase retrieve --json
|
|
56
|
+
# optional query-plane probe, only with a real table name
|
|
57
|
+
node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase retrieve --describe-table MyDMO__dlm --json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. Choose the smallest correct query shape
|
|
61
|
+
```bash
|
|
62
|
+
sf data360 query sql -o <org> --sql 'SELECT COUNT(*) FROM "ssot__Individual__dlm"' 2>/dev/null
|
|
63
|
+
sf data360 query sqlv2 -o <org> --sql 'SELECT * FROM "ssot__Individual__dlm"' 2>/dev/null
|
|
64
|
+
sf data360 query async-create -o <org> --sql 'SELECT * FROM "ssot__Individual__dlm"' 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Use describe before guessing fields
|
|
68
|
+
```bash
|
|
69
|
+
sf data360 query describe -o <org> --table ssot__Individual__dlm 2>/dev/null
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 4. Use vector or hybrid search only when an index exists
|
|
73
|
+
```bash
|
|
74
|
+
sf data360 search-index list -o <org> 2>/dev/null
|
|
75
|
+
sf data360 query vector -o <org> --index Knowledge_Index --query "reset password" --limit 5 2>/dev/null
|
|
76
|
+
sf data360 query hybrid -o <org> --index Knowledge_Index --query "reset password" --limit 5 2>/dev/null
|
|
77
|
+
sf data360 query hybrid -o <org> --index Insurance_Index --query "weather damage coverage" --prefilter "Type_of_Insurance__c='Home'" --limit 10 2>/dev/null
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 5. Reuse curated search-index examples when creating indexes
|
|
81
|
+
Use the phase-owned examples instead of inventing JSON from scratch:
|
|
82
|
+
- `examples/search-indexes/vector-knowledge.json`
|
|
83
|
+
- `examples/search-indexes/hybrid-structured.json`
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## High-Signal Gotchas
|
|
88
|
+
|
|
89
|
+
- Data Cloud SQL is not SOQL.
|
|
90
|
+
- Table names should be double-quoted in SQL.
|
|
91
|
+
- `sqlv2` is better than ad hoc OFFSET paging for medium result sets.
|
|
92
|
+
- async query is preferable for large results.
|
|
93
|
+
- search-index operations and vector/hybrid queries depend on the index lifecycle being healthy.
|
|
94
|
+
- Hybrid search can use `--prefilter`, but only on fields configured as prefilter-capable when the search index was created.
|
|
95
|
+
- HNSW index parameters are typically read-only on create; leave `userValues: []` unless the platform explicitly documents otherwise.
|
|
96
|
+
- `query describe` is not a universal tenant probe; only run it with a known DMO or DLO table after broader readiness has been confirmed.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Output Format
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
Retrieve task: <sql / sqlv2 / async / describe / vector / search-index>
|
|
104
|
+
Target org: <alias>
|
|
105
|
+
Target object: <table or index>
|
|
106
|
+
Commands: <key commands run>
|
|
107
|
+
Verification: <query rows / schema / status>
|
|
108
|
+
Next step: <segment / harmonize / follow-up>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## References
|
|
114
|
+
|
|
115
|
+
- [README.md](README.md)
|
|
116
|
+
- [examples/search-indexes/vector-knowledge.json](examples/search-indexes/vector-knowledge.json)
|
|
117
|
+
- [examples/search-indexes/hybrid-structured.json](examples/search-indexes/hybrid-structured.json)
|
|
118
|
+
- [../orchestrating-datacloud/assets/definitions/search-index.template.json](../orchestrating-datacloud/assets/definitions/search-index.template.json)
|
|
119
|
+
- [../orchestrating-datacloud/references/plugin-setup.md](../orchestrating-datacloud/references/plugin-setup.md)
|
|
120
|
+
- [../orchestrating-datacloud/references/feature-readiness.md](../orchestrating-datacloud/references/feature-readiness.md)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"label": "<INDEX_NAME>",
|
|
3
|
+
"developerName": "<INDEX_NAME>",
|
|
4
|
+
"description": "Hybrid search index on a structured Data Cloud DMO",
|
|
5
|
+
"sourceDmoDeveloperName": "<SOURCE_DMO>__dlm",
|
|
6
|
+
"chunkDmoName": "<INDEX_NAME> chunk",
|
|
7
|
+
"chunkDmoDeveloperName": "<INDEX_NAME>_chunk",
|
|
8
|
+
"vectorDmoName": "<INDEX_NAME> index",
|
|
9
|
+
"vectorDmoDeveloperName": "<INDEX_NAME>_index",
|
|
10
|
+
"searchType": "HYBRID",
|
|
11
|
+
"vectorEmbedding": {
|
|
12
|
+
"vectorEmbeddingRelatedFields": []
|
|
13
|
+
},
|
|
14
|
+
"rankingConfigurations": [],
|
|
15
|
+
"chunkingConfiguration": {
|
|
16
|
+
"fieldLevelConfigurations": [
|
|
17
|
+
{
|
|
18
|
+
"sourceDmoDeveloperName": "<SOURCE_DMO>__dlm",
|
|
19
|
+
"sourceDmoFieldDeveloperName": "<TEXT_FIELD>__c",
|
|
20
|
+
"config": {
|
|
21
|
+
"id": "passage_extraction",
|
|
22
|
+
"userValues": [
|
|
23
|
+
{ "id": "max_tokens", "value": "512" },
|
|
24
|
+
{ "id": "strip_html", "value": "true" }
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"vectorEmbeddingConfiguration": {
|
|
31
|
+
"embeddingModel": {
|
|
32
|
+
"id": "e5_large_v2",
|
|
33
|
+
"userValues": [
|
|
34
|
+
{ "id": "dimension", "value": "1024" },
|
|
35
|
+
{ "id": "max_token_limit", "value": "512" }
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"index": {
|
|
39
|
+
"id": "HNSW",
|
|
40
|
+
"userValues": []
|
|
41
|
+
},
|
|
42
|
+
"similarityMetric": "COSINE"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"label": "My_kav",
|
|
3
|
+
"developerName": "My_kav",
|
|
4
|
+
"sourceDmoDeveloperName": "ssot__KnowledgeArticleVersion__dlm",
|
|
5
|
+
"chunkDmoName": "My_kav chunk",
|
|
6
|
+
"chunkDmoDeveloperName": "My_kav_chunk",
|
|
7
|
+
"vectorDmoName": "My_kav index",
|
|
8
|
+
"vectorDmoDeveloperName": "My_kav_index",
|
|
9
|
+
"searchType": "VECTOR",
|
|
10
|
+
"vectorEmbedding": {
|
|
11
|
+
"vectorEmbeddingRelatedFields": []
|
|
12
|
+
},
|
|
13
|
+
"chunkingConfiguration": {
|
|
14
|
+
"fieldLevelConfigurations": [
|
|
15
|
+
{
|
|
16
|
+
"sourceDmoDeveloperName": "ssot__KnowledgeArticleVersion__dlm",
|
|
17
|
+
"sourceDmoFieldDeveloperName": "ssot__Name__c",
|
|
18
|
+
"config": {
|
|
19
|
+
"id": "passage_extraction",
|
|
20
|
+
"userValues": [
|
|
21
|
+
{ "id": "strip_html", "value": "true" },
|
|
22
|
+
{ "id": "max_tokens", "value": "512" }
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"vectorEmbeddingConfiguration": {
|
|
29
|
+
"embeddingModel": {
|
|
30
|
+
"id": "e5_large_v2",
|
|
31
|
+
"userValues": [
|
|
32
|
+
{ "id": "dimension", "value": "1024" },
|
|
33
|
+
{ "id": "max_token_limit", "value": "512" }
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"index": {
|
|
37
|
+
"id": "HNSW",
|
|
38
|
+
"userValues": []
|
|
39
|
+
},
|
|
40
|
+
"similarityMetric": "COSINE"
|
|
41
|
+
},
|
|
42
|
+
"rankingConfigurations": []
|
|
43
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Credits & Acknowledgments
|
|
2
|
+
|
|
3
|
+
This skill integrates concepts and patterns from Salesforce documentation and the broader Salesforce developer community. The goal is to move beyond minimum coverage targets toward true unit testing with proper isolation, mocking, and disciplined test-fix workflows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Key Patterns Integrated
|
|
8
|
+
|
|
9
|
+
| Pattern | Integration |
|
|
10
|
+
|---------|-------------|
|
|
11
|
+
| DML Mocking | `assets/dml-mock.cls` |
|
|
12
|
+
| Mocking vs Stubbing | `references/mocking-patterns.md` |
|
|
13
|
+
| Test Data Factory | `assets/test-data-factory.cls` |
|
|
14
|
+
| HttpCalloutMock | `assets/mock-callout-test.cls` |
|
|
15
|
+
| StubProvider | `assets/stub-provider-example.cls` |
|
|
16
|
+
| Performant Tests | `references/performance-optimization.md` |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Philosophy
|
|
21
|
+
|
|
22
|
+
This skill teaches Apex developers how to write fast, reliable, maintainable tests using vanilla Apex patterns — no external packages or libraries required. All patterns work in any Salesforce org out of the box.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# running-apex-tests
|
|
2
|
+
|
|
3
|
+
Comprehensive Salesforce testing skill with test execution, code coverage analysis, and agentic test-fix loops. Run tests, analyze coverage, and automatically fix failing tests.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Test Execution**: Run Apex tests via sf CLI with coverage analysis
|
|
8
|
+
- **Coverage Analysis**: Parse reports, identify untested code paths
|
|
9
|
+
- **Failure Analysis**: Parse failures, identify root causes, suggest fixes
|
|
10
|
+
- **Agentic Test-Fix Loop**: Automatically fix failing tests and re-run
|
|
11
|
+
- **120-Point Scoring**: Validation across 6 categories
|
|
12
|
+
- **Bulk Testing**: Validate with 251+ records for governor limits
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
### 1. Invoke the skill
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Skill: running-apex-tests
|
|
20
|
+
Request: "Run all tests and show coverage report for org dev"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. Common operations
|
|
24
|
+
|
|
25
|
+
| Operation | Example Request |
|
|
26
|
+
|-----------|-----------------|
|
|
27
|
+
| Run class | "Run AccountServiceTest in org dev" |
|
|
28
|
+
| Run all | "Run all local tests with coverage" |
|
|
29
|
+
| Coverage report | "Show code coverage for AccountService" |
|
|
30
|
+
| Fix loop | "Run tests and fix failures automatically" |
|
|
31
|
+
| Generate tests | "Create tests for AccountService class" |
|
|
32
|
+
|
|
33
|
+
## Key Commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Run single test class
|
|
37
|
+
sf apex run test --class-names MyClassTest --code-coverage --result-format json --target-org [alias]
|
|
38
|
+
|
|
39
|
+
# Run all local tests
|
|
40
|
+
sf apex run test --test-level RunLocalTests --code-coverage --result-format json --target-org [alias]
|
|
41
|
+
|
|
42
|
+
# Run specific methods
|
|
43
|
+
sf apex run test --tests MyClassTest.testMethod1 --target-org [alias]
|
|
44
|
+
|
|
45
|
+
# Run with output directory
|
|
46
|
+
sf apex run test --class-names MyClassTest --output-dir test-results --target-org [alias]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Scoring System (120 Points)
|
|
50
|
+
|
|
51
|
+
| Category | Points | Focus |
|
|
52
|
+
|----------|--------|-------|
|
|
53
|
+
| Coverage | 25 | Overall and per-class coverage |
|
|
54
|
+
| Assertions | 25 | Meaningful assertions, edge cases |
|
|
55
|
+
| Bulk Testing | 20 | 251+ records, governor limits |
|
|
56
|
+
| Data Isolation | 20 | @TestSetup, test data factories |
|
|
57
|
+
| Negative Tests | 15 | Error paths, exceptions |
|
|
58
|
+
| Documentation | 15 | Test descriptions, clear naming |
|
|
59
|
+
|
|
60
|
+
## Test Thresholds
|
|
61
|
+
|
|
62
|
+
| Level | Coverage | Purpose |
|
|
63
|
+
|-------|----------|---------|
|
|
64
|
+
| Production | 75% minimum | Required for deployment |
|
|
65
|
+
| Recommended | 90%+ | Best practice target |
|
|
66
|
+
| Critical paths | 100% | Business-critical code |
|
|
67
|
+
|
|
68
|
+
## Cross-Skill Integration
|
|
69
|
+
|
|
70
|
+
| Related Skill | When to Use |
|
|
71
|
+
|---------------|-------------|
|
|
72
|
+
| sf-apex | Fix failing Apex code |
|
|
73
|
+
| debugging-apex-logs | Analyze test failures with debug logs |
|
|
74
|
+
| handling-sf-data | Generate 251+ bulk test records |
|
|
75
|
+
| deploying-metadata | Validate before deployment |
|
|
76
|
+
|
|
77
|
+
## Agentic Test-Fix Loop
|
|
78
|
+
|
|
79
|
+
When enabled, the skill will:
|
|
80
|
+
1. Run tests and capture failures
|
|
81
|
+
2. Analyze error messages and stack traces
|
|
82
|
+
3. Generate fixes for common issues
|
|
83
|
+
4. Apply fixes and re-run tests
|
|
84
|
+
5. Repeat until all tests pass or max iterations reached
|
|
85
|
+
|
|
86
|
+
## Documentation
|
|
87
|
+
|
|
88
|
+
- [Testing Best Practices](references/testing-best-practices.md)
|
|
89
|
+
|
|
90
|
+
## Requirements
|
|
91
|
+
|
|
92
|
+
- sf CLI v2
|
|
93
|
+
- Target Salesforce org
|
|
94
|
+
- Test classes in org or local project
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: running-apex-tests
|
|
3
|
+
description: "Apex test execution, coverage analysis, and test-fix loops with 120-point scoring. Use when the user needs to run Apex tests, check code coverage, fix failing tests, or work with *Test.cls / *_Test.cls files. TRIGGER when: user runs Apex tests, checks code coverage, fixes failing tests, or touches *Test.cls / *_Test.cls files. DO NOT TRIGGER when: writing Apex production code (use generating-apex), Agentforce agent testing (use testing-agentforce), or Jest/LWC tests (use generating-lwc-components)."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.1"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# running-apex-tests: Salesforce Test Execution & Coverage Analysis
|
|
10
|
+
|
|
11
|
+
Use this skill when the user needs **Apex test execution and failure analysis**: running tests, checking coverage, interpreting failures, improving coverage, and managing a disciplined test-fix loop for Salesforce code.
|
|
12
|
+
|
|
13
|
+
## When This Skill Owns the Task
|
|
14
|
+
|
|
15
|
+
Use `running-apex-tests` when the work involves:
|
|
16
|
+
- `sf apex run test` workflows
|
|
17
|
+
- Apex unit-test failures
|
|
18
|
+
- code coverage analysis
|
|
19
|
+
- identifying uncovered lines and missing test scenarios
|
|
20
|
+
- structured test-fix loops for Apex code
|
|
21
|
+
|
|
22
|
+
Delegate elsewhere when the user is:
|
|
23
|
+
- writing or refactoring production Apex → `generating-apex` skill
|
|
24
|
+
- testing Agentforce agents → `testing-agentforce` skill
|
|
25
|
+
- testing LWC with Jest → [generating-lwc-components](../generating-lwc-components/SKILL.md)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Required Context to Gather First
|
|
30
|
+
|
|
31
|
+
Ask for or infer:
|
|
32
|
+
- target org alias
|
|
33
|
+
- desired test scope: single class, specific methods, suite, or local tests
|
|
34
|
+
- coverage threshold expectation
|
|
35
|
+
- whether the user wants diagnosis only or a test-fix loop
|
|
36
|
+
- whether related test data factories already exist
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Recommended Workflow
|
|
41
|
+
|
|
42
|
+
### 1. Discover test scope
|
|
43
|
+
Identify:
|
|
44
|
+
- existing test classes
|
|
45
|
+
- target production classes
|
|
46
|
+
- test data factories / setup helpers
|
|
47
|
+
|
|
48
|
+
### 2. Run the smallest useful test set first
|
|
49
|
+
Start narrow when debugging a failure; widen only after the fix is stable.
|
|
50
|
+
|
|
51
|
+
### 3. Analyze results
|
|
52
|
+
Focus on:
|
|
53
|
+
- failing methods
|
|
54
|
+
- exception types and stack traces
|
|
55
|
+
- uncovered lines / weak coverage areas
|
|
56
|
+
- whether failures indicate bad test data, brittle assertions, or broken production logic
|
|
57
|
+
|
|
58
|
+
### 4. Run a disciplined fix loop
|
|
59
|
+
When the issue is code or test quality:
|
|
60
|
+
- delegate code fixes to `generating-apex` skill when needed
|
|
61
|
+
- add or improve tests
|
|
62
|
+
- rerun focused tests before broader regression
|
|
63
|
+
|
|
64
|
+
### 5. Improve coverage intentionally
|
|
65
|
+
Cover:
|
|
66
|
+
- positive path
|
|
67
|
+
- negative / exception path
|
|
68
|
+
- bulk path (251+ records where appropriate)
|
|
69
|
+
- callout or async path when relevant
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## High-Signal Rules
|
|
74
|
+
|
|
75
|
+
| Rule | Rationale |
|
|
76
|
+
|------|-----------|
|
|
77
|
+
| Default to `SeeAllData=false` | Ensures test isolation; prevents reliance on org-specific data |
|
|
78
|
+
| Every test must assert meaningful outcomes | Tests with no assertions prove nothing and give false confidence |
|
|
79
|
+
| Test bulk behavior with 251+ records | Triggers process in batches of 200; 251 records crosses the boundary |
|
|
80
|
+
| Use factories / `@TestSetup` when they improve clarity | Consistent data creation in one place; rolled back between test methods |
|
|
81
|
+
| Pair `Test.startTest()` with `Test.stopTest()` for async | Ensures async operations (queueable, future) complete before assertions |
|
|
82
|
+
| Do not hide flaky org dependencies inside tests | Prevents intermittent failures tied to org state |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Gotchas
|
|
87
|
+
|
|
88
|
+
| Issue | Resolution |
|
|
89
|
+
|-------|------------|
|
|
90
|
+
| Test passes locally but fails in CI org | Check for `SeeAllData=true` or undeclared dependencies on org-specific records |
|
|
91
|
+
| Coverage drops unexpectedly after refactor | Run focused class-level tests first, then widen to `RunLocalTests` to confirm |
|
|
92
|
+
| "Uncommitted work pending" error in callout test | DML and HTTP callouts cannot be mixed in the same test context without `Test.startTest()` wrapping |
|
|
93
|
+
| Mock not taking effect in test | Ensure `Test.setMock()` is called before the code that makes the callout |
|
|
94
|
+
| `@TestSetup` data missing in test method | `@TestSetup` data is committed per test method — re-query it; do not store in static variables |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Output Format
|
|
99
|
+
|
|
100
|
+
When finishing, report in this order:
|
|
101
|
+
1. **What tests were run**
|
|
102
|
+
2. **Pass/fail summary**
|
|
103
|
+
3. **Coverage result**
|
|
104
|
+
4. **Root-cause findings**
|
|
105
|
+
5. **Fix or next-run recommendation**
|
|
106
|
+
|
|
107
|
+
Suggested shape:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
Test run: <scope>
|
|
111
|
+
Org: <alias>
|
|
112
|
+
Result: <passed / partial / failed>
|
|
113
|
+
Coverage: <percent / key classes>
|
|
114
|
+
Issues: <highest-signal failures>
|
|
115
|
+
Next step: <fix class, add test, rerun scope, or widen regression>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Cross-Skill Integration
|
|
121
|
+
|
|
122
|
+
| Need | Delegate to | Reason |
|
|
123
|
+
|------|-------------|--------|
|
|
124
|
+
| Fix production code or author test classes | `generating-apex` skill | Code generation and repair |
|
|
125
|
+
| Create bulk / edge-case test data | [handling-sf-data](../handling-sf-data/SKILL.md) | Realistic test datasets |
|
|
126
|
+
| Deploy updated tests to org | [deploying-metadata](../deploying-metadata/SKILL.md) | Deployment workflows |
|
|
127
|
+
| Inspect detailed runtime logs | [debugging-apex-logs](../debugging-apex-logs/SKILL.md) | Deeper failure analysis |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Reference File Index
|
|
132
|
+
|
|
133
|
+
| File | When to read |
|
|
134
|
+
|------|-------------|
|
|
135
|
+
| `references/cli-commands.md` | All `sf apex run test` command flags, output formats, async execution, and coverage commands |
|
|
136
|
+
| `references/test-patterns.md` | Test class templates — basic, bulk (251+), mock callout, and data factory patterns |
|
|
137
|
+
| `references/testing-best-practices.md` | Core testing principles — AAA pattern, naming conventions, bulk, negative, and mock strategies |
|
|
138
|
+
| `references/test-fix-loop.md` | Agentic test-fix loop implementation and failure analysis decision tree |
|
|
139
|
+
| `references/mocking-patterns.md` | HttpCalloutMock, DML mocking, StubProvider, and selector mocking patterns |
|
|
140
|
+
| `references/performance-optimization.md` | Techniques to reduce test execution time — DML mocking, SOQL mocking, loop optimizations |
|
|
141
|
+
| `assets/basic-test.cls` | Template: standard test class with `@TestSetup`, positive / negative / bulk / edge-case methods |
|
|
142
|
+
| `assets/bulk-test.cls` | Template: bulk test with 251+ records that crosses the 200-record trigger batch boundary |
|
|
143
|
+
| `assets/mock-callout-test.cls` | Template: HTTP callout mock using `HttpCalloutMock` |
|
|
144
|
+
| `assets/test-data-factory.cls` | Template: reusable `TestDataFactory` with create and insert helpers |
|
|
145
|
+
| `assets/dml-mock.cls` | Template: `IDML` interface + `DMLMock` implementation for database-free unit tests |
|
|
146
|
+
| `assets/stub-provider-example.cls` | Template: `StubProvider`-based dependency injection stub |
|
|
147
|
+
| `hooks/scripts/parse-test-results.py` | Post-tool hook — parses `sf apex run test` JSON output and formats failures for the auto-fix loop |
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Score Guide
|
|
152
|
+
|
|
153
|
+
| Score | Meaning |
|
|
154
|
+
|---|---|
|
|
155
|
+
| 108+ | strong production-grade test confidence |
|
|
156
|
+
| 96–107 | good test suite with minor gaps |
|
|
157
|
+
| 84–95 | acceptable but strengthen coverage / assertions |
|
|
158
|
+
| < 84 | below standard; revise before relying on it |
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Test class for {{ClassName}}
|
|
3
|
+
* Tests core functionality with positive, negative, and bulk scenarios.
|
|
4
|
+
* @created {{Date}}
|
|
5
|
+
* @coverage Target: 90%+
|
|
6
|
+
*/
|
|
7
|
+
@IsTest
|
|
8
|
+
private class {{ClassName}}Test {
|
|
9
|
+
|
|
10
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
11
|
+
// TEST DATA SETUP
|
|
12
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
13
|
+
|
|
14
|
+
@TestSetup
|
|
15
|
+
static void setupTestData() {
|
|
16
|
+
// Create test data using Test Data Factory pattern
|
|
17
|
+
// This data is available to all test methods and rolled back after each
|
|
18
|
+
List<{{ObjectName}}> records = TestDataFactory.create{{ObjectName}}s(5);
|
|
19
|
+
insert records;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
23
|
+
// POSITIVE TESTS
|
|
24
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @description Tests successful {{methodUnderTest}} with valid input
|
|
28
|
+
*/
|
|
29
|
+
@IsTest
|
|
30
|
+
static void test{{MethodUnderTest}}_ValidInput_Success() {
|
|
31
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
32
|
+
// GIVEN - Set up test conditions
|
|
33
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
34
|
+
{{ObjectName}} testRecord = [SELECT Id, Name FROM {{ObjectName}} LIMIT 1];
|
|
35
|
+
// TODO: Add any additional setup needed
|
|
36
|
+
|
|
37
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
38
|
+
// WHEN - Execute the method under test
|
|
39
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
40
|
+
Test.startTest();
|
|
41
|
+
{{ReturnType}} result = {{ClassName}}.{{methodUnderTest}}(testRecord);
|
|
42
|
+
Test.stopTest();
|
|
43
|
+
|
|
44
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
45
|
+
// THEN - Verify expected outcomes
|
|
46
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
47
|
+
Assert.isNotNull(result, 'Result should not be null');
|
|
48
|
+
// TODO: Add specific assertions for expected values
|
|
49
|
+
// Assert.areEqual(expectedValue, result, 'Result should match expected value');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
53
|
+
// NEGATIVE TESTS
|
|
54
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @description Tests {{methodUnderTest}} throws exception with null input
|
|
58
|
+
*/
|
|
59
|
+
@IsTest
|
|
60
|
+
static void test{{MethodUnderTest}}_NullInput_ThrowsException() {
|
|
61
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
62
|
+
// GIVEN - Null input
|
|
63
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
64
|
+
{{ObjectName}} nullRecord = null;
|
|
65
|
+
|
|
66
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
67
|
+
// WHEN/THEN - Verify exception is thrown
|
|
68
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
69
|
+
try {
|
|
70
|
+
Test.startTest();
|
|
71
|
+
{{ClassName}}.{{methodUnderTest}}(nullRecord);
|
|
72
|
+
Test.stopTest();
|
|
73
|
+
Assert.fail('Expected exception was not thrown');
|
|
74
|
+
} catch (IllegalArgumentException e) {
|
|
75
|
+
Assert.isTrue(
|
|
76
|
+
e.getMessage().containsIgnoreCase('null') ||
|
|
77
|
+
e.getMessage().containsIgnoreCase('required'),
|
|
78
|
+
'Error message should indicate null/required issue: ' + e.getMessage()
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @description Tests {{methodUnderTest}} handles invalid data gracefully
|
|
85
|
+
*/
|
|
86
|
+
@IsTest
|
|
87
|
+
static void test{{MethodUnderTest}}_InvalidData_ReturnsError() {
|
|
88
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
89
|
+
// GIVEN - Invalid input data
|
|
90
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
91
|
+
{{ObjectName}} invalidRecord = new {{ObjectName}}(
|
|
92
|
+
// TODO: Set invalid field values that should fail validation
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
96
|
+
// WHEN - Execute with invalid data
|
|
97
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
98
|
+
Test.startTest();
|
|
99
|
+
// TODO: Call method and capture result/exception
|
|
100
|
+
Test.stopTest();
|
|
101
|
+
|
|
102
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
103
|
+
// THEN - Verify appropriate error handling
|
|
104
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
105
|
+
// TODO: Assert error message or state
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
109
|
+
// BULK TESTS (251+ records)
|
|
110
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @description Tests {{methodUnderTest}} handles bulk operations (251 records)
|
|
114
|
+
* 251 records crosses the 200-record trigger batch boundary
|
|
115
|
+
*/
|
|
116
|
+
@IsTest
|
|
117
|
+
static void test{{MethodUnderTest}}_BulkOperation_Success() {
|
|
118
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
119
|
+
// GIVEN - 251 records (crosses 200-record batch boundary)
|
|
120
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
121
|
+
List<{{ObjectName}}> bulkRecords = TestDataFactory.create{{ObjectName}}s(251);
|
|
122
|
+
|
|
123
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
124
|
+
// WHEN - Process bulk records
|
|
125
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
126
|
+
Test.startTest();
|
|
127
|
+
insert bulkRecords; // Triggers fire in batches of 200, then 51
|
|
128
|
+
Test.stopTest();
|
|
129
|
+
|
|
130
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
131
|
+
// THEN - Verify all records processed without governor limit issues
|
|
132
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
133
|
+
Integer recordCount = [SELECT COUNT() FROM {{ObjectName}}];
|
|
134
|
+
Assert.isTrue(recordCount >= 251, 'All 251 records should be processed');
|
|
135
|
+
|
|
136
|
+
// Verify governor limits not approached
|
|
137
|
+
Assert.isTrue(Limits.getQueries() < 90,
|
|
138
|
+
'SOQL queries should stay well under limit: ' + Limits.getQueries() + '/100');
|
|
139
|
+
Assert.isTrue(Limits.getDmlStatements() < 140,
|
|
140
|
+
'DML statements should stay under limit: ' + Limits.getDmlStatements() + '/150');
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
144
|
+
// EDGE CASE TESTS
|
|
145
|
+
// ═══════════════════════════════════════════════────────────────────────────
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @description Tests {{methodUnderTest}} with empty list input
|
|
149
|
+
*/
|
|
150
|
+
@IsTest
|
|
151
|
+
static void test{{MethodUnderTest}}_EmptyList_NoError() {
|
|
152
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
153
|
+
// GIVEN - Empty list
|
|
154
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
155
|
+
List<{{ObjectName}}> emptyList = new List<{{ObjectName}}>();
|
|
156
|
+
|
|
157
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
158
|
+
// WHEN - Process empty list
|
|
159
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
160
|
+
Test.startTest();
|
|
161
|
+
// TODO: Call method with empty list
|
|
162
|
+
Test.stopTest();
|
|
163
|
+
|
|
164
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
165
|
+
// THEN - Should handle gracefully (no exception)
|
|
166
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
167
|
+
// TODO: Assert appropriate handling
|
|
168
|
+
}
|
|
169
|
+
}
|