@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,291 @@
|
|
|
1
|
+
<!-- Parent: building-omnistudio-flexcard/SKILL.md -->
|
|
2
|
+
|
|
3
|
+
# FlexCard Best Practices
|
|
4
|
+
|
|
5
|
+
## Layout Design Patterns
|
|
6
|
+
|
|
7
|
+
### Single Card
|
|
8
|
+
|
|
9
|
+
Use for displaying summary information about a single record. Group related fields into logical sections.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
┌──────────────────────────────────┐
|
|
13
|
+
│ Header: Record Name │
|
|
14
|
+
├──────────────────────────────────┤
|
|
15
|
+
│ Section 1: Key Details │
|
|
16
|
+
│ ┌────────────┬─────────────┐ │
|
|
17
|
+
│ │ Field A │ Field B │ │
|
|
18
|
+
│ │ Field C │ Field D │ │
|
|
19
|
+
│ └────────────┴─────────────┘ │
|
|
20
|
+
├──────────────────────────────────┤
|
|
21
|
+
│ Section 2: Status │
|
|
22
|
+
│ ┌──────────────────────────┐ │
|
|
23
|
+
│ │ Status Badge │ Date │ │
|
|
24
|
+
│ └──────────────────────────┘ │
|
|
25
|
+
├──────────────────────────────────┤
|
|
26
|
+
│ [Action Button 1] [Action 2] │
|
|
27
|
+
└──────────────────────────────────┘
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Guidelines:**
|
|
31
|
+
- Limit to 8-10 fields per card to avoid information overload
|
|
32
|
+
- Place the most important fields in the top section
|
|
33
|
+
- Use consistent field alignment (label-left or label-top)
|
|
34
|
+
- Group related fields in the same row when they share context
|
|
35
|
+
|
|
36
|
+
### Card List
|
|
37
|
+
|
|
38
|
+
Use for displaying a collection of related records. Each card in the list renders from one item in the data source array.
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
┌──────────────────────────────────┐
|
|
42
|
+
│ Card 1: Record A │
|
|
43
|
+
│ Field 1 | Field 2 | [Action] │
|
|
44
|
+
├──────────────────────────────────┤
|
|
45
|
+
│ Card 2: Record B │
|
|
46
|
+
│ Field 1 | Field 2 | [Action] │
|
|
47
|
+
├──────────────────────────────────┤
|
|
48
|
+
│ Card 3: Record C │
|
|
49
|
+
│ Field 1 | Field 2 | [Action] │
|
|
50
|
+
└──────────────────────────────────┘
|
|
51
|
+
Showing 1-3 of 15 [Next →]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Guidelines:**
|
|
55
|
+
- Keep each list card compact (3-5 fields maximum)
|
|
56
|
+
- Include a clear identifier field (Name, Title, or ID) in each card
|
|
57
|
+
- Add pagination when the data source can return more than 10 records
|
|
58
|
+
- Use consistent card height to maintain visual rhythm
|
|
59
|
+
- Provide a "View All" link when the list is truncated
|
|
60
|
+
|
|
61
|
+
### Tabbed Card
|
|
62
|
+
|
|
63
|
+
Use when a single record has multiple contexts worth displaying. Each tab represents a different state with its own data source or field set.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
┌──────────────────────────────────┐
|
|
67
|
+
│ [Tab 1: Overview] [Tab 2: History] [Tab 3: Related] │
|
|
68
|
+
├──────────────────────────────────┤
|
|
69
|
+
│ Tab 1 Content │
|
|
70
|
+
│ ┌──────────────────────────┐ │
|
|
71
|
+
│ │ Fields for this context │ │
|
|
72
|
+
│ └──────────────────────────┘ │
|
|
73
|
+
└──────────────────────────────────┘
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Guidelines:**
|
|
77
|
+
- Limit to 3-5 tabs to avoid horizontal overflow
|
|
78
|
+
- Use concise tab labels (1-2 words)
|
|
79
|
+
- Load non-active tab data lazily (on tab selection)
|
|
80
|
+
- Mark the default active tab based on the most common use case
|
|
81
|
+
|
|
82
|
+
### Flyout Card
|
|
83
|
+
|
|
84
|
+
Use for progressive disclosure: show a summary, then expand for details on demand.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
┌──────────────────────────────────┐
|
|
88
|
+
│ Summary: Key Fields [▼ More] │
|
|
89
|
+
└──────────────────────────────────┘
|
|
90
|
+
↓ (on click)
|
|
91
|
+
┌──────────────────────────────────┐
|
|
92
|
+
│ Summary: Key Fields [▲ Less] │
|
|
93
|
+
├──────────────────────────────────┤
|
|
94
|
+
│ Detail Section │
|
|
95
|
+
│ Additional fields, history, │
|
|
96
|
+
│ related records, etc. │
|
|
97
|
+
└──────────────────────────────────┘
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Guidelines:**
|
|
101
|
+
- Keep the summary to 2-3 fields that answer "what is this?"
|
|
102
|
+
- Load flyout content on demand, not on initial card render
|
|
103
|
+
- Provide a clear visual indicator for the expand/collapse action
|
|
104
|
+
- Maintain the flyout state if the user scrolls away and returns
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Data Source Optimization
|
|
109
|
+
|
|
110
|
+
### Minimize IP Calls
|
|
111
|
+
|
|
112
|
+
- Use a single IP that returns all required data rather than multiple IPs for individual fields
|
|
113
|
+
- If the card has multiple data sources, ensure they do not query overlapping data
|
|
114
|
+
- Cache IP responses where the data does not change frequently (use IP caching options)
|
|
115
|
+
|
|
116
|
+
### Input Parameter Efficiency
|
|
117
|
+
|
|
118
|
+
- Pass only the parameters the IP needs; do not forward the entire page context
|
|
119
|
+
- Use `{recordId}` as the primary context parameter for record-level cards
|
|
120
|
+
- Avoid passing large objects as input parameters; pass IDs and let the IP query
|
|
121
|
+
|
|
122
|
+
### Response Structure
|
|
123
|
+
|
|
124
|
+
- Design IP responses to match the FlexCard's field mapping structure directly
|
|
125
|
+
- Avoid deep nesting in IP responses when the FlexCard only needs top-level fields
|
|
126
|
+
- Use `resultListPath` to point directly to the array node in list-type cards
|
|
127
|
+
|
|
128
|
+
### Error Handling in Data Sources
|
|
129
|
+
|
|
130
|
+
- Configure a fallback state for when the IP returns an error
|
|
131
|
+
- Set reasonable timeout values for data source calls
|
|
132
|
+
- Log data source errors for debugging without exposing raw error messages to end users
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Action Configuration
|
|
137
|
+
|
|
138
|
+
### OmniScript Launch Actions
|
|
139
|
+
|
|
140
|
+
| Consideration | Guidance |
|
|
141
|
+
|---------------|----------|
|
|
142
|
+
| **Parameter mapping** | Map card data fields to OmniScript input fields explicitly |
|
|
143
|
+
| **Pre-population** | Pass enough context for the OmniScript to pre-fill known values |
|
|
144
|
+
| **Return handling** | Refresh the FlexCard data source after the OmniScript completes |
|
|
145
|
+
| **Error states** | Handle the case where the OmniScript fails or is cancelled |
|
|
146
|
+
|
|
147
|
+
### Navigation Actions
|
|
148
|
+
|
|
149
|
+
| Consideration | Guidance |
|
|
150
|
+
|---------------|----------|
|
|
151
|
+
| **Record navigation** | Use `{recordId}` merge fields, not hardcoded IDs |
|
|
152
|
+
| **URL navigation** | Use relative URLs for internal Salesforce navigation |
|
|
153
|
+
| **External URLs** | Open in a new tab; warn users if leaving Salesforce |
|
|
154
|
+
| **Conditional navigation** | Disable navigation buttons when the target is invalid |
|
|
155
|
+
|
|
156
|
+
### Action Button Placement
|
|
157
|
+
|
|
158
|
+
- Place primary actions at the bottom of the card or in the card header
|
|
159
|
+
- Limit to 2-3 actions per card; use a "More Actions" overflow menu for additional actions
|
|
160
|
+
- Use descriptive button labels ("Submit Claim", not "Submit" or "Go")
|
|
161
|
+
- Visually distinguish primary actions (filled button) from secondary actions (outline button)
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## SLDS Compliance for Styling
|
|
166
|
+
|
|
167
|
+
### Required Practices
|
|
168
|
+
|
|
169
|
+
- Use SLDS design tokens for all colors, spacing, font sizes, and border radii
|
|
170
|
+
- Use `slds-card` or `slds-tile` patterns for card containers
|
|
171
|
+
- Use `slds-grid` and `slds-col` for multi-column layouts within cards
|
|
172
|
+
- Apply `slds-text-heading_small` and related text utilities for consistent typography
|
|
173
|
+
|
|
174
|
+
### Color Usage
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
Correct: Use SLDS token → var(--slds-g-color-brand-base-50)
|
|
178
|
+
Wrong: Hardcoded hex → #0176d3
|
|
179
|
+
Wrong: Hardcoded rgb → rgb(1, 118, 211)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
- Status indicators: use `slds-badge` with appropriate color variants
|
|
183
|
+
- Background colors: use `slds-box` with `slds-theme_shade` or `slds-theme_default`
|
|
184
|
+
- Text colors: rely on inherited SLDS text colors; override only when necessary
|
|
185
|
+
|
|
186
|
+
### Spacing
|
|
187
|
+
|
|
188
|
+
- Use SLDS spacing utilities: `slds-m-top_small`, `slds-p-around_medium`, etc.
|
|
189
|
+
- Maintain consistent spacing between card sections (use `slds-m-bottom_medium`)
|
|
190
|
+
- Do not use pixel values directly; map to the SLDS spacing scale
|
|
191
|
+
|
|
192
|
+
### Dark Mode Compatibility
|
|
193
|
+
|
|
194
|
+
- All colors must come from SLDS CSS custom properties (`--slds-g-color-*`)
|
|
195
|
+
- Test card rendering in both light and dark modes
|
|
196
|
+
- Avoid background images that only work on light backgrounds
|
|
197
|
+
- Use `currentColor` for icon fills so they adapt to the text color
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Accessibility Requirements
|
|
202
|
+
|
|
203
|
+
### Interactive Elements
|
|
204
|
+
|
|
205
|
+
- Every button must have an `aria-label` or visible text label
|
|
206
|
+
- Links must have descriptive text (not "Click here" or "Learn more" without context)
|
|
207
|
+
- Icon-only buttons require `aria-label` describing the action
|
|
208
|
+
|
|
209
|
+
### Keyboard Navigation
|
|
210
|
+
|
|
211
|
+
- All action buttons must be focusable via Tab key
|
|
212
|
+
- Buttons must activate on Enter and Space key presses
|
|
213
|
+
- Tab order must follow the visual reading order (top-to-bottom, left-to-right)
|
|
214
|
+
- Flyout expand/collapse must be keyboard accessible
|
|
215
|
+
|
|
216
|
+
### Screen Reader Support
|
|
217
|
+
|
|
218
|
+
- Use semantic heading elements for card titles and section headers
|
|
219
|
+
- Data fields should have associated labels readable by screen readers
|
|
220
|
+
- Status indicators must convey meaning through text, not color alone
|
|
221
|
+
- Dynamic content updates should use `aria-live` regions
|
|
222
|
+
|
|
223
|
+
### Color Contrast
|
|
224
|
+
|
|
225
|
+
- Text on card backgrounds must meet WCAG 2.1 AA contrast ratio (4.5:1)
|
|
226
|
+
- Interactive element boundaries must have 3:1 contrast against their background
|
|
227
|
+
- Do not use color as the sole method of conveying information (add icons or text)
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Performance with Large Data Sets
|
|
232
|
+
|
|
233
|
+
### Data Volume Guidelines
|
|
234
|
+
|
|
235
|
+
| Record Count | Recommended Approach |
|
|
236
|
+
|-------------|---------------------|
|
|
237
|
+
| 1-5 | Load all records in a single card list |
|
|
238
|
+
| 6-25 | Load with pagination (show 5-10 per page) |
|
|
239
|
+
| 26-100 | Server-side pagination via IP; load one page at a time |
|
|
240
|
+
| 100+ | Reconsider the UX; use search/filter instead of browsing |
|
|
241
|
+
|
|
242
|
+
### Rendering Performance
|
|
243
|
+
|
|
244
|
+
- Limit child card nesting to 2 levels maximum
|
|
245
|
+
- Avoid rendering more than 25 cards simultaneously in a card list
|
|
246
|
+
- Use conditional visibility to hide sections rather than rendering and hiding with CSS
|
|
247
|
+
- Lazy-load tab content and flyout details on user interaction
|
|
248
|
+
|
|
249
|
+
### Data Source Performance
|
|
250
|
+
|
|
251
|
+
- Set appropriate IP cache durations for data that does not change frequently
|
|
252
|
+
- Avoid chaining multiple IPs when a single IP can return all needed data
|
|
253
|
+
- Use `resultListPath` to avoid client-side data transformation
|
|
254
|
+
- Monitor IP execution times; optimize IPs that take longer than 2 seconds
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Child Card Composition
|
|
259
|
+
|
|
260
|
+
### When to Use Child Cards
|
|
261
|
+
|
|
262
|
+
- The parent card displays summary data and the child card shows related detail
|
|
263
|
+
- Multiple cards share a common layout pattern that should be defined once
|
|
264
|
+
- Different sections of a card require independent data sources
|
|
265
|
+
|
|
266
|
+
### Composition Guidelines
|
|
267
|
+
|
|
268
|
+
- Pass data from parent to child via input parameters, not global variables
|
|
269
|
+
- Keep child cards self-contained: they should work independently for testing
|
|
270
|
+
- Limit nesting to 2 levels (parent → child → grandchild maximum)
|
|
271
|
+
- Document the parent-child data flow in the FlexCard's description
|
|
272
|
+
|
|
273
|
+
### Data Flow Pattern
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Parent FlexCard
|
|
277
|
+
├── Data Source: IP_GetAccountSummary
|
|
278
|
+
│ └── Passes {AccountId} to child
|
|
279
|
+
└── Child FlexCard: AccountContacts
|
|
280
|
+
└── Data Source: IP_GetContacts
|
|
281
|
+
└── Input: {AccountId} from parent
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Avoiding Composition Anti-Patterns
|
|
285
|
+
|
|
286
|
+
| Anti-Pattern | Problem | Solution |
|
|
287
|
+
|-------------|---------|----------|
|
|
288
|
+
| Deep nesting (3+ levels) | Performance degradation, hard to debug | Flatten the structure; combine data in the IP |
|
|
289
|
+
| Shared mutable state | Child cards modifying parent data | Use one-way data flow (parent → child only) |
|
|
290
|
+
| Duplicate data sources | Same IP called by parent and child | Consolidate into parent data source; pass results down |
|
|
291
|
+
| Tightly coupled children | Child card cannot function without parent | Design children to accept input parameters and work standalone |
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
<!-- Parent: building-omnistudio-flexcard/SKILL.md -->
|
|
2
|
+
|
|
3
|
+
# FlexCard Data Binding Guide
|
|
4
|
+
|
|
5
|
+
## Integration Procedure Data Source Configuration
|
|
6
|
+
|
|
7
|
+
### Basic IP Binding
|
|
8
|
+
|
|
9
|
+
The most common FlexCard data source is an Integration Procedure. The data source configuration specifies which IP to call, what input to send, and where to find the results in the IP response.
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"dataSource": {
|
|
14
|
+
"type": "IntegrationProcedures",
|
|
15
|
+
"value": {
|
|
16
|
+
"ipMethod": "Type_SubType",
|
|
17
|
+
"inputMap": {
|
|
18
|
+
"recordId": "{recordId}"
|
|
19
|
+
},
|
|
20
|
+
"resultListPath": ""
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
| Property | Purpose | Example |
|
|
27
|
+
|----------|---------|---------|
|
|
28
|
+
| `type` | Data source type identifier | `"IntegrationProcedures"` (plural, capital P) |
|
|
29
|
+
| `ipMethod` | IP Type and SubType joined by underscore | `"Account_GetSummary"` |
|
|
30
|
+
| `inputMap` | Key-value pairs sent as IP input | `{ "recordId": "{recordId}" }` |
|
|
31
|
+
| `resultListPath` | JSON path to the array node for list-type cards | `"records"` or `""` for root |
|
|
32
|
+
|
|
33
|
+
### IP Method Naming Convention
|
|
34
|
+
|
|
35
|
+
The `ipMethod` value combines the IP's Type and SubType fields:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
IP Type: "Account"
|
|
39
|
+
IP SubType: "GetSummary"
|
|
40
|
+
ipMethod: "Account_GetSummary"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Ensure the IP is active and the Type/SubType match exactly (case-sensitive).
|
|
44
|
+
|
|
45
|
+
### Input Map Parameters
|
|
46
|
+
|
|
47
|
+
Input parameters pass context from the FlexCard's hosting environment into the IP:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"inputMap": {
|
|
52
|
+
"recordId": "{recordId}",
|
|
53
|
+
"accountId": "{Account.Id}",
|
|
54
|
+
"status": "Active",
|
|
55
|
+
"limit": 10
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
| Syntax | Resolves To |
|
|
61
|
+
|--------|------------|
|
|
62
|
+
| `{recordId}` | The current record's ID from the hosting Lightning page |
|
|
63
|
+
| `{Account.Id}` | A field from a parent FlexCard's data source |
|
|
64
|
+
| `"Active"` | A static/literal value |
|
|
65
|
+
| `{param.customKey}` | A URL parameter or custom context variable |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Field Mapping Syntax
|
|
70
|
+
|
|
71
|
+
### Basic Field Mapping
|
|
72
|
+
|
|
73
|
+
Map IP response fields to FlexCard display elements using curly-brace merge syntax:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
IP Response JSON: FlexCard Merge Field:
|
|
77
|
+
───────────────── ─────────────────────
|
|
78
|
+
{ "Name": "Acme Corp" } → {Name}
|
|
79
|
+
{ "Status": "Active" } → {Status}
|
|
80
|
+
{ "Amount": 50000 } → {Amount}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Nested Field Mapping
|
|
84
|
+
|
|
85
|
+
Access nested objects in the IP response using dot notation:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
IP Response JSON: FlexCard Merge Field:
|
|
89
|
+
───────────────── ─────────────────────
|
|
90
|
+
{ → {Account.Name}
|
|
91
|
+
"Account": { → {Account.Industry}
|
|
92
|
+
"Name": "Acme Corp", → {Account.Owner.Name}
|
|
93
|
+
"Industry": "Technology",
|
|
94
|
+
"Owner": {
|
|
95
|
+
"Name": "Jane Smith"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Array Field Mapping
|
|
102
|
+
|
|
103
|
+
For card list layouts, set `resultListPath` to the array node. Each card in the list renders one item from the array:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"dataSource": {
|
|
108
|
+
"value": {
|
|
109
|
+
"ipMethod": "Contact_GetRelated",
|
|
110
|
+
"resultListPath": "contacts"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
IP Response: Each Card Renders:
|
|
118
|
+
──────────── ──────────────────
|
|
119
|
+
{ Card 1: {Name} → "Alice"
|
|
120
|
+
"contacts": [ {Email} → "alice@acme.com"
|
|
121
|
+
{ "Name": "Alice", "Email": "..." },
|
|
122
|
+
{ "Name": "Bob", "Email": "..." }, Card 2: {Name} → "Bob"
|
|
123
|
+
{ "Name": "Carol", "Email": "..." } {Email} → "bob@acme.com"
|
|
124
|
+
]
|
|
125
|
+
} Card 3: {Name} → "Carol"
|
|
126
|
+
{Email} → "carol@acme.com"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Formatted Field Display
|
|
130
|
+
|
|
131
|
+
Apply formatting to merge fields for display:
|
|
132
|
+
|
|
133
|
+
| Format Need | Approach |
|
|
134
|
+
|-------------|----------|
|
|
135
|
+
| Currency | Format in the IP response (e.g., return `"$50,000.00"`) or use OmniStudio formatting |
|
|
136
|
+
| Date | Return ISO date from IP; apply date formatting in the FlexCard field configuration |
|
|
137
|
+
| Boolean | Use conditional rendering to show icons or text instead of true/false |
|
|
138
|
+
| Percentage | Return as a number; format display in the FlexCard field |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Conditional Rendering Based on Data
|
|
143
|
+
|
|
144
|
+
### Field-Level Visibility
|
|
145
|
+
|
|
146
|
+
Show or hide individual fields based on a data value:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
Condition: {Status} == "Active"
|
|
150
|
+
Action: Show the "Renewal Date" field
|
|
151
|
+
|
|
152
|
+
Condition: {Amount} > 100000
|
|
153
|
+
Action: Show the "High Value" badge
|
|
154
|
+
|
|
155
|
+
Condition: {Email} != null
|
|
156
|
+
Action: Show the email field (hide when null)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### State-Level Visibility
|
|
160
|
+
|
|
161
|
+
FlexCards support multiple states. Each state can have visibility conditions:
|
|
162
|
+
|
|
163
|
+
| State | Visibility Condition | Use Case |
|
|
164
|
+
|-------|---------------------|----------|
|
|
165
|
+
| Default | Always visible | Primary card content |
|
|
166
|
+
| Empty | Data source returns 0 records | "No records found" message |
|
|
167
|
+
| Error | Data source returns error | Error notification |
|
|
168
|
+
| Conditional | Field matches specific value | Status-specific card layout |
|
|
169
|
+
|
|
170
|
+
### Conditional Rendering Operators
|
|
171
|
+
|
|
172
|
+
| Operator | Syntax | Example |
|
|
173
|
+
|----------|--------|---------|
|
|
174
|
+
| Equals | `==` | `{Status} == "Active"` |
|
|
175
|
+
| Not equals | `!=` | `{Status} != "Closed"` |
|
|
176
|
+
| Greater than | `>` | `{Amount} > 10000` |
|
|
177
|
+
| Less than | `<` | `{DaysOpen} < 30` |
|
|
178
|
+
| Contains | `CONTAINS` | `{Name} CONTAINS "Corp"` |
|
|
179
|
+
| Is null | `== null` | `{Email} == null` |
|
|
180
|
+
| Is not null | `!= null` | `{Phone} != null` |
|
|
181
|
+
|
|
182
|
+
### Conditional Styling
|
|
183
|
+
|
|
184
|
+
Apply different styles based on data values:
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
If {Status} == "Active" → Green badge (slds-badge slds-theme_success)
|
|
188
|
+
If {Status} == "Expired" → Red badge (slds-badge slds-theme_error)
|
|
189
|
+
If {Status} == "Pending" → Yellow badge (slds-badge slds-theme_warning)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Use SLDS theme classes rather than inline color styles to maintain dark mode compatibility.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Multi-Data-Source Cards
|
|
197
|
+
|
|
198
|
+
### When to Use Multiple Data Sources
|
|
199
|
+
|
|
200
|
+
- The card displays data from unrelated objects that cannot be fetched in a single IP
|
|
201
|
+
- Different sections of the card have different refresh requirements
|
|
202
|
+
- A child card needs its own independent data source
|
|
203
|
+
|
|
204
|
+
### Configuration Pattern
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
FlexCard: AccountOverview
|
|
208
|
+
├── Data Source 1: "Account_GetSummary"
|
|
209
|
+
│ Input: { "recordId": "{recordId}" }
|
|
210
|
+
│ Fields: {ds1.Name}, {ds1.Industry}, {ds1.Status}
|
|
211
|
+
│
|
|
212
|
+
├── Data Source 2: "Case_GetOpenCount"
|
|
213
|
+
│ Input: { "accountId": "{recordId}" }
|
|
214
|
+
│ Fields: {ds2.openCaseCount}, {ds2.lastCaseDate}
|
|
215
|
+
│
|
|
216
|
+
└── Data Source 3: "Opportunity_GetPipeline"
|
|
217
|
+
Input: { "accountId": "{recordId}" }
|
|
218
|
+
Fields: {ds3.totalPipeline}, {ds3.nextCloseDate}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Data Source Naming
|
|
222
|
+
|
|
223
|
+
When a card has multiple data sources, reference fields using the data source name prefix:
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
Single data source: {Name}
|
|
227
|
+
Multiple data sources: {ds1.Name} or {accountSummary.Name}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Load Order and Dependencies
|
|
231
|
+
|
|
232
|
+
- Data sources load in parallel by default
|
|
233
|
+
- If Data Source 2 depends on a value from Data Source 1, configure the dependency order
|
|
234
|
+
- Use conditional rendering to hide sections until their data source has loaded
|
|
235
|
+
- Display a loading indicator while data sources are in progress
|
|
236
|
+
|
|
237
|
+
### Coordinating Multiple Sources
|
|
238
|
+
|
|
239
|
+
| Pattern | Description | Use Case |
|
|
240
|
+
|---------|-------------|----------|
|
|
241
|
+
| **Parallel load** | All sources fetch simultaneously | Independent data sets |
|
|
242
|
+
| **Sequential load** | Source B waits for Source A | Source B needs a value from Source A's response |
|
|
243
|
+
| **Conditional load** | Source B only loads if Source A meets a condition | Avoid unnecessary API calls |
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Error Handling for Failed Data Sources
|
|
248
|
+
|
|
249
|
+
### Common Failure Modes
|
|
250
|
+
|
|
251
|
+
| Failure | Cause | User Impact |
|
|
252
|
+
|---------|-------|------------|
|
|
253
|
+
| IP not found | IP name misspelled or IP not deployed | Card shows no data; console error |
|
|
254
|
+
| IP inactive | IP exists but is not activated | Card shows no data |
|
|
255
|
+
| IP timeout | IP takes too long to execute | Card shows loading indefinitely |
|
|
256
|
+
| IP error response | IP logic throws an exception | Card may show partial data or error state |
|
|
257
|
+
| Auth failure | User lacks permission to run the IP | Card shows no data; access error |
|
|
258
|
+
| Network error | Connectivity issue between client and server | Card shows no data |
|
|
259
|
+
|
|
260
|
+
### Error State Design
|
|
261
|
+
|
|
262
|
+
Configure an explicit error state rather than letting the card fail silently:
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
┌──────────────────────────────────┐
|
|
266
|
+
│ ⚠ Unable to load account data │
|
|
267
|
+
│ │
|
|
268
|
+
│ The data source returned an │
|
|
269
|
+
│ error. Try refreshing the page. │
|
|
270
|
+
│ │
|
|
271
|
+
│ [Refresh] [Contact Support] │
|
|
272
|
+
└──────────────────────────────────┘
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Error State Guidelines:**
|
|
276
|
+
- Use plain language, not technical error codes
|
|
277
|
+
- Provide an actionable next step (refresh, retry, contact admin)
|
|
278
|
+
- Log the technical error details for debugging (not displayed to end users)
|
|
279
|
+
- Do not show a blank card with no explanation
|
|
280
|
+
|
|
281
|
+
### Fallback Strategies
|
|
282
|
+
|
|
283
|
+
| Strategy | Implementation | When to Use |
|
|
284
|
+
|----------|---------------|-------------|
|
|
285
|
+
| **Cached data** | Show previously loaded data with a "stale" indicator | Data changes infrequently |
|
|
286
|
+
| **Partial render** | Show fields that loaded; hide failed sections | Multi-source card where only one source fails |
|
|
287
|
+
| **Empty state** | Show "No data available" with context | Single-source card where the source fails |
|
|
288
|
+
| **Retry** | Provide a manual retry button | Transient errors (network, timeout) |
|
|
289
|
+
|
|
290
|
+
### Debugging Data Source Issues
|
|
291
|
+
|
|
292
|
+
1. **Check IP activation**: Query `SELECT Name, IsActive FROM OmniProcess WHERE Name = 'Type_SubType'`
|
|
293
|
+
2. **Verify IP input**: Use the OmniStudio Preview tool to test the IP with the same input parameters
|
|
294
|
+
3. **Check field paths**: Ensure merge field paths (`{field.subfield}`) match the actual IP response structure
|
|
295
|
+
4. **Review permissions**: Confirm the running user has access to the IP and the underlying objects
|
|
296
|
+
5. **Inspect browser console**: FlexCard data source errors appear in the browser developer console
|
|
297
|
+
6. **Test with static data**: Temporarily configure the FlexCard with a static JSON data source to isolate whether the issue is the IP or the card
|
|
298
|
+
|
|
299
|
+
### Data Source Validation Checklist
|
|
300
|
+
|
|
301
|
+
Before deploying a FlexCard, verify each data source:
|
|
302
|
+
|
|
303
|
+
- [ ] IP exists in the target org
|
|
304
|
+
- [ ] IP is activated
|
|
305
|
+
- [ ] IP Type and SubType match the `ipMethod` value exactly (case-sensitive)
|
|
306
|
+
- [ ] Input parameters use correct merge field syntax
|
|
307
|
+
- [ ] `resultListPath` points to the correct array node (for list cards)
|
|
308
|
+
- [ ] All merge fields in the card map to actual fields in the IP response
|
|
309
|
+
- [ ] Error state is configured for graceful failure
|
|
310
|
+
- [ ] Empty state is configured for zero-record responses
|
|
311
|
+
- [ ] Data source has been tested with real data in a sandbox
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# FlexCard Scoring Rubric: Breakdown Detail
|
|
2
|
+
|
|
3
|
+
Detailed point-by-point scoring criteria for the 130-point FlexCard validation. Read during Phase 3 when running the full scoring rubric.
|
|
4
|
+
|
|
5
|
+
## Design & Layout (25 points)
|
|
6
|
+
|
|
7
|
+
| Criterion | Points | Description |
|
|
8
|
+
|-----------|--------|-------------|
|
|
9
|
+
| Layout type matches use case | 5 | Single, list, tabbed, or flyout chosen appropriately |
|
|
10
|
+
| Field grouping is logical | 5 | Related fields are visually grouped together |
|
|
11
|
+
| Responsive behavior | 5 | Card adapts to different viewport widths |
|
|
12
|
+
| Consistent spacing | 5 | Margins and padding follow SLDS (Salesforce Lightning Design System) spacing scale |
|
|
13
|
+
| Visual hierarchy | 5 | Primary information is prominent, secondary is de-emphasized |
|
|
14
|
+
|
|
15
|
+
## Data Binding (20 points)
|
|
16
|
+
|
|
17
|
+
| Criterion | Points | Description |
|
|
18
|
+
|-----------|--------|-------------|
|
|
19
|
+
| IP references are valid | 5 | All referenced IPs exist and are active |
|
|
20
|
+
| Merge field syntax correct | 5 | `{datasource.field}` paths resolve to actual IP response fields |
|
|
21
|
+
| Input parameters mapped | 5 | Record context passed correctly to IP inputs |
|
|
22
|
+
| Multi-source coordination | 5 | Multiple data sources load in correct order without conflicts |
|
|
23
|
+
|
|
24
|
+
## Actions & Navigation (20 points)
|
|
25
|
+
|
|
26
|
+
| Criterion | Points | Description |
|
|
27
|
+
|-----------|--------|-------------|
|
|
28
|
+
| Action buttons functional | 5 | All buttons trigger their configured actions |
|
|
29
|
+
| OmniScript params mapped | 5 | Context data flows correctly into launched OmniScripts |
|
|
30
|
+
| Navigation targets valid | 5 | Record and URL navigation resolves correctly |
|
|
31
|
+
| Labels are descriptive | 5 | Action labels clearly communicate what the action does |
|
|
32
|
+
|
|
33
|
+
## Styling (20 points)
|
|
34
|
+
|
|
35
|
+
| Criterion | Points | Description |
|
|
36
|
+
|-----------|--------|-------------|
|
|
37
|
+
| SLDS tokens used | 5 | Colors, fonts, spacing via design tokens |
|
|
38
|
+
| Consistent typography | 5 | Text sizes follow SLDS type scale |
|
|
39
|
+
| Card pattern compliance | 5 | Uses standard SLDS card or tile patterns |
|
|
40
|
+
| Dark mode compatible | 5 | No hardcoded colors; works with SLDS dark theme |
|
|
41
|
+
|
|
42
|
+
## Accessibility (15 points)
|
|
43
|
+
|
|
44
|
+
| Criterion | Points | Description |
|
|
45
|
+
|-----------|--------|-------------|
|
|
46
|
+
| ARIA labels on interactive elements | 5 | Buttons, links, and inputs have accessible names |
|
|
47
|
+
| Keyboard navigable | 5 | All actions reachable via Tab, activated via Enter/Space |
|
|
48
|
+
| Color contrast sufficient | 5 | Meets WCAG 2.1 AA contrast ratio (4.5:1 for text) |
|
|
49
|
+
|
|
50
|
+
## Testing (15 points)
|
|
51
|
+
|
|
52
|
+
| Criterion | Points | Description |
|
|
53
|
+
|-----------|--------|-------------|
|
|
54
|
+
| Populated data verified | 3 | Card renders correctly with full data |
|
|
55
|
+
| Empty state verified | 3 | Empty-state message displays properly |
|
|
56
|
+
| Error state verified | 3 | Graceful handling of IP errors |
|
|
57
|
+
| Multi-record verified | 3 | Card list renders correct items |
|
|
58
|
+
| Mobile viewport verified | 3 | Layout adapts to small screens |
|
|
59
|
+
|
|
60
|
+
## Performance (15 points)
|
|
61
|
+
|
|
62
|
+
| Criterion | Points | Description |
|
|
63
|
+
|-----------|--------|-------------|
|
|
64
|
+
| Data source calls minimized | 5 | No redundant or duplicate IP invocations |
|
|
65
|
+
| Child card nesting limited | 5 | Maximum 2 levels of nested child cards |
|
|
66
|
+
| Lazy loading for hidden states | 5 | Non-visible tabs/flyouts load on demand |
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# FlexCard CLI Commands
|
|
3
|
+
# Replace <org> with your org alias and <Name> with the FlexCard API name.
|
|
4
|
+
|
|
5
|
+
# Query active FlexCards in the org
|
|
6
|
+
sf data query -q "SELECT Id,Name,DataSourceConfig,PropertySetConfig,IsActive FROM OmniUiCard WHERE IsActive=true LIMIT 200" -o <org>
|
|
7
|
+
|
|
8
|
+
# Retrieve a specific FlexCard by name
|
|
9
|
+
sf project retrieve start -m OmniUiCard:<Name> -o <org>
|
|
10
|
+
|
|
11
|
+
# Deploy a FlexCard to the target org
|
|
12
|
+
sf project deploy start -m OmniUiCard:<Name> -o <org>
|
|
13
|
+
|
|
14
|
+
# Retrieve all FlexCards
|
|
15
|
+
sf project retrieve start -m OmniUiCard -o <org>
|
|
16
|
+
|
|
17
|
+
# Deploy all OmniStudio metadata (FlexCards + dependencies)
|
|
18
|
+
sf project deploy start -m OmniUiCard -m OmniIntegrationProcedure -m OmniScript -o <org>
|
|
19
|
+
|
|
20
|
+
# Check deploy status (use job ID from deploy output)
|
|
21
|
+
sf project deploy report --job-id <jobId> -o <org>
|
|
22
|
+
|
|
23
|
+
# In namespaced orgs (managed package), prefix the metadata type:
|
|
24
|
+
# sf project deploy start -m omnistudio__OmniUiCard:<Name> -o <org>
|