@salesforce/afv-skills 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/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-test/CREDITS.md +2 -27
- 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-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/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/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
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
<!-- Parent: building-omnistudio-omniscript/SKILL.md -->
|
|
2
|
+
|
|
3
|
+
# OmniScript Best Practices
|
|
4
|
+
|
|
5
|
+
> **Applies to**: OmniStudio OmniScripts (OmniProcessType='OmniScript')
|
|
6
|
+
> **Companion**: See `element-types.md` for PropertySetConfig reference per element type
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Table of Contents
|
|
11
|
+
|
|
12
|
+
1. [Step Design Patterns](#1-step-design-patterns)
|
|
13
|
+
2. [Data Prefill Strategies](#2-data-prefill-strategies)
|
|
14
|
+
3. [Validation Patterns](#3-validation-patterns)
|
|
15
|
+
4. [Navigation Patterns](#4-navigation-patterns)
|
|
16
|
+
5. [Performance Optimization](#5-performance-optimization)
|
|
17
|
+
6. [Embedding vs Linking OmniScripts](#6-embedding-vs-linking-omniscripts)
|
|
18
|
+
7. [Naming Conventions](#7-naming-conventions)
|
|
19
|
+
8. [Error Handling](#8-error-handling)
|
|
20
|
+
9. [Testing Strategies](#9-testing-strategies)
|
|
21
|
+
10. [Security Considerations](#10-security-considerations)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 1. Step Design Patterns
|
|
26
|
+
|
|
27
|
+
### Wizard-Style (Multi-Step Sequential)
|
|
28
|
+
|
|
29
|
+
The default and most common pattern. Each Step represents a phase of the process, with linear forward progression.
|
|
30
|
+
|
|
31
|
+
**When to use:**
|
|
32
|
+
- Guided intake forms (service requests, applications, enrollments)
|
|
33
|
+
- Multi-phase data collection where later steps depend on earlier inputs
|
|
34
|
+
- Processes that benefit from chunking to reduce cognitive load
|
|
35
|
+
|
|
36
|
+
**Design rules:**
|
|
37
|
+
- Limit each Step to 7-10 input elements (cognitive load threshold)
|
|
38
|
+
- Group related fields together within a Step
|
|
39
|
+
- Place data-fetching actions (DataRaptor Extract, IP Action) at the beginning of the Step they serve
|
|
40
|
+
- Use descriptive Step labels that orient the user (e.g., "Contact Information", "Review & Submit")
|
|
41
|
+
- The final Step should be a review/confirmation screen
|
|
42
|
+
|
|
43
|
+
**Example structure:**
|
|
44
|
+
```
|
|
45
|
+
Step 1: "Account Selection" -> Type Ahead (account search) + DataRaptor Extract (prefill)
|
|
46
|
+
Step 2: "Service Details" -> Select, Text, Date inputs for the request
|
|
47
|
+
Step 3: "Attachments" -> File upload + Text Area for notes
|
|
48
|
+
Step 4: "Review & Submit" -> Text Blocks displaying collected data + Submit Action
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Single-Page (All Elements Visible)
|
|
52
|
+
|
|
53
|
+
All elements rendered on a single Step with no navigation between pages.
|
|
54
|
+
|
|
55
|
+
**When to use:**
|
|
56
|
+
- Simple forms with 5 or fewer inputs
|
|
57
|
+
- Quick-action modals launched from FlexCards
|
|
58
|
+
- Inline editing scenarios
|
|
59
|
+
|
|
60
|
+
**Design rules:**
|
|
61
|
+
- Use a single Step element containing all inputs
|
|
62
|
+
- Omit navigation buttons (no Next/Previous needed)
|
|
63
|
+
- Keep the total element count low to avoid scroll fatigue
|
|
64
|
+
- Consider whether a FlexCard with inline editing would be simpler
|
|
65
|
+
|
|
66
|
+
### Conditional Branching
|
|
67
|
+
|
|
68
|
+
Steps are shown or hidden based on user input or data conditions.
|
|
69
|
+
|
|
70
|
+
**When to use:**
|
|
71
|
+
- Processes where the path varies by user selection (e.g., "New" vs "Existing" customer)
|
|
72
|
+
- Compliance workflows where certain sections only apply to specific scenarios
|
|
73
|
+
- Multi-product intake where product type determines required fields
|
|
74
|
+
|
|
75
|
+
**Design rules:**
|
|
76
|
+
- Use the `show` property on Steps with conditional expressions
|
|
77
|
+
- Reference data JSON values using merge field syntax: `%ShowStep3%` or `{ShowStep3}`
|
|
78
|
+
- Set controlling values early in the flow (Step 1 or data prefill)
|
|
79
|
+
- Test all permutations of the conditional paths
|
|
80
|
+
- Document the branching logic in Step descriptions
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"show": {
|
|
85
|
+
"group": {
|
|
86
|
+
"operator": "AND",
|
|
87
|
+
"rules": [
|
|
88
|
+
{
|
|
89
|
+
"field": "CustomerType",
|
|
90
|
+
"condition": "=",
|
|
91
|
+
"data": "New"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Hub-and-Spoke
|
|
100
|
+
|
|
101
|
+
A central Step allows navigation to sub-sections, each completing independently.
|
|
102
|
+
|
|
103
|
+
**When to use:**
|
|
104
|
+
- Complex case management with multiple independent sections
|
|
105
|
+
- Forms where the user may complete sections in any order
|
|
106
|
+
- Processes requiring non-linear data entry
|
|
107
|
+
|
|
108
|
+
**Design rules:**
|
|
109
|
+
- Central hub Step with Navigate Actions to each spoke
|
|
110
|
+
- Each spoke completes and returns to the hub
|
|
111
|
+
- Track section completion status in the data JSON
|
|
112
|
+
- Display completion indicators on the hub Step
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 2. Data Prefill Strategies
|
|
117
|
+
|
|
118
|
+
### DataRaptor Extract Prefill
|
|
119
|
+
|
|
120
|
+
Use DataRaptor Extract Actions at the beginning of a Step to populate elements with existing Salesforce data.
|
|
121
|
+
|
|
122
|
+
**Best practice:**
|
|
123
|
+
- Place the Extract Action as the first element in the Step (lowest Order value)
|
|
124
|
+
- Configure `executionConditionFormula` to skip the fetch if data already exists
|
|
125
|
+
- Map Extract output keys to match element names for automatic binding
|
|
126
|
+
- Filter the Extract query to return only the needed fields
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"bundle": "DR_ExtractAccountDetails",
|
|
131
|
+
"inputMap": {
|
|
132
|
+
"AccountId": "%SelectedAccountId%"
|
|
133
|
+
},
|
|
134
|
+
"outputMap": {
|
|
135
|
+
"AccountName": "AccountName",
|
|
136
|
+
"BillingAddress": "BillingAddress"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Integration Procedure Prefill
|
|
142
|
+
|
|
143
|
+
Use IP Actions for complex prefill that requires server-side logic, aggregation, or external API calls.
|
|
144
|
+
|
|
145
|
+
**Best practice:**
|
|
146
|
+
- Set `remoteOptions.preTransformBundle` if data needs shaping before display
|
|
147
|
+
- Use `executionConditionFormula` to avoid re-fetching on back navigation
|
|
148
|
+
- Cache results in the data JSON so subsequent Steps can reference them without additional calls
|
|
149
|
+
|
|
150
|
+
### Contextual Prefill (Launch Parameters)
|
|
151
|
+
|
|
152
|
+
OmniScripts can receive data when launched from FlexCards, Lightning pages, or URLs.
|
|
153
|
+
|
|
154
|
+
**Best practice:**
|
|
155
|
+
- Document all expected launch parameters in the OmniScript description
|
|
156
|
+
- Validate that required parameters are present; show an error Step if missing
|
|
157
|
+
- Use Set Values elements to normalize parameter formats before processing
|
|
158
|
+
|
|
159
|
+
### Save & Resume Prefill
|
|
160
|
+
|
|
161
|
+
When "Save for Later" is enabled, the OmniScript restores the full data JSON on resume.
|
|
162
|
+
|
|
163
|
+
**Best practice:**
|
|
164
|
+
- Configure `saveNameTemplate` for meaningful save identifiers
|
|
165
|
+
- Set `saveExpireInDays` to prevent stale saved instances
|
|
166
|
+
- Test that all elements re-render correctly from saved JSON
|
|
167
|
+
- Handle edge cases where referenced data may have changed between save and resume
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 3. Validation Patterns
|
|
172
|
+
|
|
173
|
+
### Element-Level Validation
|
|
174
|
+
|
|
175
|
+
Configure validation directly on input elements via PropertySetConfig.
|
|
176
|
+
|
|
177
|
+
| Property | Purpose | Example |
|
|
178
|
+
|----------|---------|---------|
|
|
179
|
+
| `required` | Field must have a value | `"required": true` |
|
|
180
|
+
| `pattern` | Regex pattern match | `"pattern": "^[A-Z]{2}\\d{6}$"` |
|
|
181
|
+
| `min` / `max` | Numeric range | `"min": 1, "max": 100` |
|
|
182
|
+
| `minLength` / `maxLength` | Text length range | `"minLength": 5, "maxLength": 255` |
|
|
183
|
+
| `minDate` / `maxDate` | Date range | `"minDate": "TODAY", "maxDate": "+30"` |
|
|
184
|
+
|
|
185
|
+
### Validation Elements
|
|
186
|
+
|
|
187
|
+
Use Validation elements for cross-field and business rule validation.
|
|
188
|
+
|
|
189
|
+
**Best practice:**
|
|
190
|
+
- Place Validation elements at the end of a Step, before the navigation connector
|
|
191
|
+
- Write clear, user-actionable error messages
|
|
192
|
+
- Reference multiple fields in the validation formula for cross-field checks
|
|
193
|
+
- Group related validations in a single Validation element when possible
|
|
194
|
+
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"validationFormula": "%EndDate% > %StartDate%",
|
|
198
|
+
"errorMessage": "End date must be after the start date."
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Step-Level Validation
|
|
203
|
+
|
|
204
|
+
Prevent the user from advancing to the next Step until all validations pass.
|
|
205
|
+
|
|
206
|
+
**Best practice:**
|
|
207
|
+
- Combine `required` properties on inputs with Validation elements for complex rules
|
|
208
|
+
- Use the Step's `validationRequired` property to enforce completion
|
|
209
|
+
- Display inline validation messages near the field, not only at the top of the page
|
|
210
|
+
|
|
211
|
+
### Server-Side Validation
|
|
212
|
+
|
|
213
|
+
Use Integration Procedure Actions for validations that require database lookups or external checks.
|
|
214
|
+
|
|
215
|
+
**Best practice:**
|
|
216
|
+
- Display a loading indicator during server-side validation
|
|
217
|
+
- Handle timeout and error responses gracefully
|
|
218
|
+
- Cache validation results to avoid redundant server calls on back-navigation
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 4. Navigation Patterns
|
|
223
|
+
|
|
224
|
+
### Standard Linear Navigation
|
|
225
|
+
|
|
226
|
+
Default back/forward progression through Steps.
|
|
227
|
+
|
|
228
|
+
**Configuration:**
|
|
229
|
+
- `allowSaveForLater`: Enable save & resume functionality
|
|
230
|
+
- `cancelAction`: Define behavior when user clicks Cancel (redirect URL or close modal)
|
|
231
|
+
- `showStepChart`: Display step progress indicator
|
|
232
|
+
- `stepChartPlacement`: Position the step chart (top, left, right)
|
|
233
|
+
|
|
234
|
+
### Conditional Step Skipping
|
|
235
|
+
|
|
236
|
+
Skip Steps that are not relevant based on collected data.
|
|
237
|
+
|
|
238
|
+
**Best practice:**
|
|
239
|
+
- Use the `show` property on Steps rather than Navigate Actions for conditional paths
|
|
240
|
+
- The OmniScript engine automatically skips hidden Steps during forward navigation
|
|
241
|
+
- Test that skipped Steps do not contribute invalid data to the JSON
|
|
242
|
+
|
|
243
|
+
### Custom Navigation Buttons
|
|
244
|
+
|
|
245
|
+
Override default Next/Previous with Navigate Actions for non-linear flows.
|
|
246
|
+
|
|
247
|
+
**Best practice:**
|
|
248
|
+
- Maintain a consistent button layout across Steps
|
|
249
|
+
- Label navigation buttons with the destination Step name, not generic "Next"
|
|
250
|
+
- Disable the Previous button on the first Step
|
|
251
|
+
- Consider whether non-linear navigation will confuse the user
|
|
252
|
+
|
|
253
|
+
### Cancel and Exit
|
|
254
|
+
|
|
255
|
+
**Best practice:**
|
|
256
|
+
- Prompt for confirmation before discarding entered data
|
|
257
|
+
- Offer "Save for Later" alongside Cancel when appropriate
|
|
258
|
+
- Redirect to a meaningful page after cancellation (not a blank screen)
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 5. Performance Optimization
|
|
263
|
+
|
|
264
|
+
### Lazy Loading Elements
|
|
265
|
+
|
|
266
|
+
Configure action elements to execute only when their containing Step becomes visible.
|
|
267
|
+
|
|
268
|
+
**Best practice:**
|
|
269
|
+
- Set `executionConditionFormula` on DataRaptor Extract and IP Actions
|
|
270
|
+
- Use Step-level activation triggers rather than OmniScript-level `onLoad` actions
|
|
271
|
+
- Prefetch only the data needed for the first Step on initial load
|
|
272
|
+
|
|
273
|
+
### Conditional Visibility vs Conditional Rendering
|
|
274
|
+
|
|
275
|
+
| Approach | Behavior | Performance Impact |
|
|
276
|
+
|----------|----------|--------------------|
|
|
277
|
+
| `show` on elements | Element is not rendered in DOM | Lower memory, faster rendering |
|
|
278
|
+
| CSS visibility | Element is rendered but hidden | Higher memory, same load time |
|
|
279
|
+
|
|
280
|
+
**Best practice:**
|
|
281
|
+
- Use the `show` property for elements that may not be needed at all
|
|
282
|
+
- Avoid rendering large data tables or Loop Blocks that the user may never see
|
|
283
|
+
|
|
284
|
+
### Data Volume in Loop Blocks
|
|
285
|
+
|
|
286
|
+
Loop Blocks render elements for each item in a data array. Large arrays degrade performance.
|
|
287
|
+
|
|
288
|
+
**Best practice:**
|
|
289
|
+
- Limit the data array to 50 items or fewer for interactive Loop Blocks
|
|
290
|
+
- Implement server-side pagination via Integration Procedures for large datasets
|
|
291
|
+
- Use Type Ahead elements instead of Loop Blocks when the user needs to search/select from a large list
|
|
292
|
+
|
|
293
|
+
### Minimize Action Element Count
|
|
294
|
+
|
|
295
|
+
Each action element (DataRaptor, IP, Remote Action) represents a server round-trip.
|
|
296
|
+
|
|
297
|
+
**Best practice:**
|
|
298
|
+
- Combine multiple data fetches into a single Integration Procedure where possible
|
|
299
|
+
- Fetch all data needed for a Step in one action, not one action per field
|
|
300
|
+
- Use Set Values to derive calculated fields client-side instead of calling the server
|
|
301
|
+
|
|
302
|
+
### Image and Static Content
|
|
303
|
+
|
|
304
|
+
**Best practice:**
|
|
305
|
+
- Host images on a CDN or Salesforce Static Resource rather than embedding base64 in Text Blocks
|
|
306
|
+
- Minimize HTML complexity in Text Block elements
|
|
307
|
+
- Use the Image element type instead of `<img>` tags in Text Blocks
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## 6. Embedding vs Linking OmniScripts
|
|
312
|
+
|
|
313
|
+
### Embedding (Child OmniScript)
|
|
314
|
+
|
|
315
|
+
An OmniScript rendered inside another OmniScript as a reusable sub-process.
|
|
316
|
+
|
|
317
|
+
**When to embed:**
|
|
318
|
+
- The sub-process is a self-contained unit reused across multiple parent OmniScripts
|
|
319
|
+
- The parent needs data from the child's interaction (child data merges into parent JSON)
|
|
320
|
+
- The user should not leave the parent context
|
|
321
|
+
|
|
322
|
+
**Design rules:**
|
|
323
|
+
- Pass required data from parent to child via `prefillJSON` mapping
|
|
324
|
+
- Configure the child to suppress its own navigation when embedded
|
|
325
|
+
- Test data merge behavior: child data is added to the parent JSON under the child element's name
|
|
326
|
+
- Avoid embedding more than 2 levels deep (parent -> child -> grandchild is the practical limit)
|
|
327
|
+
- Watch for name collisions between parent and child data JSON keys
|
|
328
|
+
|
|
329
|
+
### Linking (Navigate Action)
|
|
330
|
+
|
|
331
|
+
A Navigate Action redirects to a separate OmniScript in a new context.
|
|
332
|
+
|
|
333
|
+
**When to link:**
|
|
334
|
+
- The processes are independent and do not share a data context
|
|
335
|
+
- The user is transitioning from one workflow to a different one
|
|
336
|
+
- The target OmniScript is also used standalone (not just as a sub-component)
|
|
337
|
+
|
|
338
|
+
**Design rules:**
|
|
339
|
+
- Pass context data via URL parameters or the Navigate Action's `params` property
|
|
340
|
+
- The linked OmniScript starts fresh with its own data JSON
|
|
341
|
+
- Handle the return navigation (redirect back to the originating page if needed)
|
|
342
|
+
|
|
343
|
+
### Decision Matrix
|
|
344
|
+
|
|
345
|
+
| Factor | Embed | Link |
|
|
346
|
+
|--------|-------|------|
|
|
347
|
+
| Data sharing needed | Yes | No |
|
|
348
|
+
| Reused as standalone | Sometimes | Yes |
|
|
349
|
+
| User stays in context | Yes | No |
|
|
350
|
+
| Performance concern | Adds to page weight | Separate page load |
|
|
351
|
+
| Depth > 2 levels | Avoid | Preferred |
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## 7. Naming Conventions
|
|
356
|
+
|
|
357
|
+
### OmniScript Type/SubType
|
|
358
|
+
|
|
359
|
+
- **Type**: Business domain or process category. Use `PascalCase`. Examples: `ServiceRequest`, `MemberEnrollment`, `ClaimProcessing`
|
|
360
|
+
- **SubType**: Specific variation or action. Use `PascalCase`. Examples: `CreateNew`, `UpdateAddress`, `FileAppeal`
|
|
361
|
+
- **Language**: Use standard locale codes. Default: `English`
|
|
362
|
+
|
|
363
|
+
### Element Names
|
|
364
|
+
|
|
365
|
+
- Use `PascalCase` for all element names
|
|
366
|
+
- Prefix action elements with their type: `DRExtract_AccountInfo`, `IP_ValidateEligibility`, `Nav_ReturnToCase`
|
|
367
|
+
- Name Steps with the section they represent: `Step_ContactInfo`, `Step_ReviewSubmit`
|
|
368
|
+
- Name input elements descriptively: `FirstName`, `PreferredContactMethod`, `RequestedStartDate`
|
|
369
|
+
|
|
370
|
+
### Data JSON Keys
|
|
371
|
+
|
|
372
|
+
- Match element names for automatic binding
|
|
373
|
+
- Use consistent casing throughout the OmniScript
|
|
374
|
+
- Avoid special characters, spaces, and reserved words in key names
|
|
375
|
+
- Document the data JSON schema for complex OmniScripts
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## 8. Error Handling
|
|
380
|
+
|
|
381
|
+
### Action Element Errors
|
|
382
|
+
|
|
383
|
+
Every DataRaptor, Integration Procedure, and Remote Action element should handle failures.
|
|
384
|
+
|
|
385
|
+
**Best practice:**
|
|
386
|
+
- Set `showError: true` and provide a meaningful `errorMessage` in PropertySetConfig
|
|
387
|
+
- Use `responseJSONPath` to extract specific error details from the response
|
|
388
|
+
- Implement a fallback Step that displays when critical actions fail
|
|
389
|
+
- Log errors server-side via an IP Action for monitoring
|
|
390
|
+
|
|
391
|
+
### User Input Errors
|
|
392
|
+
|
|
393
|
+
**Best practice:**
|
|
394
|
+
- Show inline error messages immediately on invalid input (not only on Step advance)
|
|
395
|
+
- Use red visual indicators and position error text near the offending field
|
|
396
|
+
- Provide specific guidance on how to fix the error (not just "Invalid input")
|
|
397
|
+
|
|
398
|
+
### Network and Timeout Errors
|
|
399
|
+
|
|
400
|
+
**Best practice:**
|
|
401
|
+
- Configure `remoteTimeout` on IP Actions for long-running operations
|
|
402
|
+
- Display a loading indicator during server calls
|
|
403
|
+
- Offer a retry option when transient errors occur
|
|
404
|
+
- If the OmniScript cannot continue, display a clear message with a support contact
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## 9. Testing Strategies
|
|
409
|
+
|
|
410
|
+
### Manual Testing Checklist
|
|
411
|
+
|
|
412
|
+
- [ ] Walk through all Steps with valid data (happy path)
|
|
413
|
+
- [ ] Attempt to advance with missing required fields
|
|
414
|
+
- [ ] Enter invalid data for each validated input
|
|
415
|
+
- [ ] Exercise all conditional branches (show/hide Steps and elements)
|
|
416
|
+
- [ ] Test with prefilled vs empty launch parameters
|
|
417
|
+
- [ ] Test Save for Later and Resume
|
|
418
|
+
- [ ] Verify data is correctly submitted/saved
|
|
419
|
+
- [ ] Test Cancel behavior and confirmation prompt
|
|
420
|
+
- [ ] Check rendering on mobile viewport
|
|
421
|
+
- [ ] Verify with different user profiles/permission sets
|
|
422
|
+
|
|
423
|
+
### Integration Testing
|
|
424
|
+
|
|
425
|
+
- [ ] Verify all DataRaptor Extract Actions return expected data
|
|
426
|
+
- [ ] Verify all DataRaptor Load Actions create/update records correctly
|
|
427
|
+
- [ ] Verify all IP Actions execute and return expected responses
|
|
428
|
+
- [ ] Test with integration failures (disable a DataRaptor, verify error handling)
|
|
429
|
+
- [ ] Test with large data volumes in Loop Blocks
|
|
430
|
+
|
|
431
|
+
### Cross-Browser and Device Testing
|
|
432
|
+
|
|
433
|
+
- [ ] Desktop: Chrome, Firefox, Safari, Edge
|
|
434
|
+
- [ ] Mobile: iOS Safari, Android Chrome
|
|
435
|
+
- [ ] Tablet: verify responsive layout breakpoints
|
|
436
|
+
- [ ] Community/Experience Cloud: verify guest and authenticated rendering
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 10. Security Considerations
|
|
441
|
+
|
|
442
|
+
### Data Exposure
|
|
443
|
+
|
|
444
|
+
- OmniScript data JSON is client-side. Sensitive data (SSNs, passwords, tokens) should be processed server-side in Integration Procedures and never stored in the client JSON.
|
|
445
|
+
- Use `maskValue` on sensitive input elements to prevent shoulder-surfing.
|
|
446
|
+
- Strip sensitive fields from the data JSON before the Submit Action using Set Values.
|
|
447
|
+
|
|
448
|
+
### Access Control
|
|
449
|
+
|
|
450
|
+
- OmniScript visibility is controlled by the page or component it is placed on, not by the OmniScript itself.
|
|
451
|
+
- Ensure Integration Procedures enforce record-level and field-level security (FLS).
|
|
452
|
+
- Do not rely on hiding Steps or elements as a security mechanism; the data JSON can be inspected client-side.
|
|
453
|
+
|
|
454
|
+
### Input Sanitization
|
|
455
|
+
|
|
456
|
+
- Validate all user input before passing to DataRaptor Load or IP Actions.
|
|
457
|
+
- Use `pattern` (regex) on text inputs to restrict input format.
|
|
458
|
+
- Server-side IPs should validate input independently; do not trust client-side validation alone.
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## 11. Common Troubleshooting
|
|
463
|
+
|
|
464
|
+
| Symptom | Cause | Resolution |
|
|
465
|
+
|---------|-------|------------|
|
|
466
|
+
| OmniScript not rendering | OmniScript is inactive or element hierarchy is broken | Check `IsActive=true` on the OmniProcess record; verify all Steps (Level=0) and child elements are correctly parented |
|
|
467
|
+
| Data not prefilling | DataRaptor Extract output mapping mismatch or wrong JSON path | Verify DataRaptor Extract output key names exactly match element names; check JSON path syntax in outputMap |
|
|
468
|
+
| IP action failing silently | Integration Procedure input shape mismatch or IP is inactive | Test the IP independently with the same inputMap payload; verify IP is active; check `showError: true` is set on the action element |
|
|
469
|
+
| Steps not showing | Conditional visibility expression on the Step evaluates incorrectly | Review the `show` expression on the Step element; log data JSON values to verify the controlling field is set |
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## Key Takeaways
|
|
474
|
+
|
|
475
|
+
1. **Keep Steps focused**: 7-10 elements maximum per Step. Split complex processes into more Steps rather than cramming elements.
|
|
476
|
+
2. **Prefill early, validate often**: Load data at the start of each Step and validate before allowing progression.
|
|
477
|
+
3. **Error handling is not optional**: Every server call needs a failure path. Every required input needs validation.
|
|
478
|
+
4. **Performance is a design constraint**: Lazy-load data, limit Loop Block iterations, and minimize server round-trips.
|
|
479
|
+
5. **Embed sparingly, link freely**: Embedding couples OmniScripts tightly. Reserve it for genuine sub-processes.
|
|
480
|
+
6. **Security is server-side**: The client JSON is not a trust boundary. Sensitive logic belongs in Integration Procedures.
|