@salesforce/afv-skills 1.41.0 → 1.43.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 +2 -6
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +3 -0
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +4 -0
- package/skills/design-systems-slds-validate/SKILL.md +2 -2
- package/skills/dx-app-analytics-query/SKILL.md +1 -3
- package/skills/dx-devops-conflict-resolve/SKILL.md +205 -0
- package/skills/dx-devops-conflict-resolve/examples/conflict-workflows.md +165 -0
- package/skills/dx-devops-conflict-resolve/references/deploy-failure-resolution.md +75 -0
- package/skills/dx-devops-conflict-resolve/references/git-conflict-resolution.md +124 -0
- package/skills/dx-devops-conflict-resolve/scripts/detect-conflicts.sh +91 -0
- package/skills/dx-devops-conflict-resolve/scripts/diagnose-deploy-failure.sh +156 -0
- package/skills/dx-devops-request-status/SKILL.md +160 -0
- package/skills/dx-devops-request-status/examples/polling-workflows.md +101 -0
- package/skills/dx-devops-request-status/references/cli-commands.md +176 -0
- package/skills/dx-devops-request-status/scripts/poll-status.sh +134 -0
- package/skills/dx-devops-test-failures-analyze/SKILL.md +6 -6
- package/skills/dx-devops-test-pipeline-configure/SKILL.md +7 -7
- package/skills/dx-devops-test-suite-assignments-configure/SKILL.md +6 -6
- package/skills/dx-devops-test-suite-run/SKILL.md +6 -6
- package/skills/dx-devops-work-item-manage/SKILL.md +2 -0
- package/skills/dx-org-manage/references/creating-scratch-org.md +5 -2
- package/skills/dx-org-manage/references/creating-snapshot.md +1 -0
- package/skills/dx-org-shape-manage/SKILL.md +152 -0
- package/skills/dx-org-shape-manage/examples/create_error_output.json +9 -0
- package/skills/dx-org-shape-manage/examples/create_success_output.json +9 -0
- package/skills/dx-org-shape-manage/examples/delete_output.json +11 -0
- package/skills/dx-org-shape-manage/examples/list_inactive_output.json +32 -0
- package/skills/dx-org-shape-manage/examples/list_output.json +24 -0
- package/skills/dx-org-shape-manage/references/cli_flags.md +135 -0
- package/skills/dx-org-switch/SKILL.md +2 -2
- package/skills/dx-org-trial-expiration-check/SKILL.md +2 -0
- package/skills/dx-pkg-post-install-configure/SKILL.md +3 -0
- package/skills/education-cloud-multi-campus-configure/SKILL.md +211 -0
- package/skills/education-cloud-multi-campus-configure/examples/hierarchy_visualization.md +174 -0
- package/skills/education-cloud-multi-campus-configure/examples/output_examples.md +54 -0
- package/skills/education-cloud-multi-campus-configure/examples/sample_hierarchy_input.csv +29 -0
- package/skills/education-cloud-multi-campus-configure/examples/sample_hierarchy_input_edgecases.csv +16 -0
- package/skills/education-cloud-multi-campus-configure/references/account_recordtype_prerequisite.md +44 -0
- package/skills/education-cloud-multi-campus-configure/references/delta_computation.md +33 -0
- package/skills/education-cloud-multi-campus-configure/references/error_handling.md +198 -0
- package/skills/education-cloud-multi-campus-configure/references/foundation_prerequisites.md +54 -0
- package/skills/education-cloud-multi-campus-configure/references/gotchas.md +16 -0
- package/skills/education-cloud-multi-campus-configure/references/hierarchy_parsing_rules.md +133 -0
- package/skills/education-cloud-multi-campus-configure/references/mcp-invocation.md +75 -0
- package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/SKILL.md +1 -1
- package/skills/experience-cms-brand-apply/SKILL.md +4 -1
- package/skills/experience-cms-brand-create/SKILL.md +197 -0
- package/skills/experience-cms-brand-create/assets/brand-template.json +329 -0
- package/skills/experience-cms-brand-create/references/brand-anatomy.md +120 -0
- package/skills/experience-cms-brand-create/references/disk-contract.md +84 -0
- package/skills/experience-cms-content-generate/SKILL.md +190 -0
- package/skills/experience-cms-content-generate/assets/display-formats.md +84 -0
- package/skills/experience-cms-content-generate/assets/payloads/create-content-bulk.json +11 -0
- package/skills/experience-cms-content-generate/assets/payloads/create-content-single.json +11 -0
- package/skills/experience-cms-content-generate/assets/payloads/publish-content.json +4 -0
- package/skills/experience-cms-content-generate/assets/payloads/update-content.json +9 -0
- package/skills/experience-cms-content-generate/assets/questions.md +241 -0
- package/skills/experience-cms-content-generate/examples/create-content-call.md +81 -0
- package/skills/experience-cms-content-generate/references/bulk-batching.md +56 -0
- package/skills/experience-cms-content-generate/references/content-type-classification.md +88 -0
- package/skills/experience-cms-content-generate/references/content-write-tool.md +95 -0
- package/skills/experience-cms-content-generate/references/delegation-protocol.md +37 -0
- package/skills/experience-cms-content-generate/references/edit-publish-workflow.md +63 -0
- package/skills/experience-cms-content-generate/references/error-recovery.md +72 -0
- package/skills/experience-cms-content-generate/references/identifier-resolution.md +26 -0
- package/skills/experience-cms-content-generate/references/intent-routing.md +45 -0
- package/skills/experience-cms-content-generate/references/principles.md +19 -0
- package/skills/experience-cms-content-generate/references/ux-rules.md +68 -0
- package/skills/experience-cms-content-generate/references/workspace-resolution.md +33 -0
- package/skills/experience-cms-content-type-generate/SKILL.md +449 -0
- package/skills/experience-cms-content-type-generate/assets/discovery-prompts.md +79 -0
- package/skills/experience-cms-content-type-generate/assets/schema-example.json +70 -0
- package/skills/experience-cms-content-type-generate/references/agent-checklist.md +50 -0
- package/skills/experience-cms-content-type-generate/references/anti-patterns.md +39 -0
- package/skills/experience-cms-content-type-generate/references/deployment-errors.md +27 -0
- package/skills/experience-cms-content-type-generate/references/discovery-details.md +106 -0
- package/skills/experience-cms-content-type-generate/references/discovery-query-rules.md +85 -0
- package/skills/experience-cms-content-type-generate/references/edit-fields-loop.md +48 -0
- package/skills/experience-cms-content-type-generate/references/pre-deploy-checklist.md +21 -0
- package/skills/experience-cms-content-type-generate/references/retrieve-and-reconcile.md +105 -0
- package/skills/experience-cms-content-type-generate/references/schema-rules.md +51 -0
- package/skills/experience-cms-content-type-generate/references/schema-summary-format.md +60 -0
- package/skills/experience-lds-graphql-generate/SKILL.md +4 -0
- package/skills/experience-lwc-accessibility-jest-run/SKILL.md +79 -0
- package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +205 -0
- package/skills/experience-lwc-design-generate/SKILL.md +5 -4
- package/skills/experience-lwc-generate/SKILL.md +10 -9
- package/skills/experience-ui-bundle-deploy/references/dev-preview.md +21 -0
- package/skills/experience-ui-bundle-deploy/references/social-login.md +1 -0
- package/skills/experience-ui-bundle-file-upload-generate/SKILL.md +6 -6
- package/skills/experience-ui-bundle-localize/SKILL.md +30 -37
- package/skills/experience-ui-bundle-localize/references/gotchas.md +23 -7
- package/skills/experience-ui-bundle-localize/references/i18n-setup.md +48 -4
- package/skills/experience-ui-bundle-localize/references/label-xml.md +22 -8
- package/skills/experience-ui-bundle-localize/references/verifying.md +39 -11
- package/skills/experience-ui-bundle-localize/scripts/detect-bundle-type.sh +118 -15
- package/skills/experience-ui-bundle-localize/scripts/tests/test-detect-bundle-type.sh +187 -0
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +13 -2
- package/skills/experience-ui-bundle-mfa-configure/references/social-login.md +1 -0
- package/skills/experience-ui-bundle-project-generate/SKILL.md +2 -2
- package/skills/integration-connectivity-generate/SKILL.md +11 -10
- package/skills/integration-eventing-cdc-configure/SKILL.md +6 -6
- package/skills/integration-eventing-subscription-configure/SKILL.md +6 -5
- package/skills/mobile-platform-native-capabilities-integrate/SKILL.md +2 -2
- package/skills/mobile-platform-offline-validate/scripts/package.json +1 -1
- package/skills/platform-agentexchange-partner-offers-configure/SKILL.md +8 -8
- package/skills/platform-custom-application-generate/SKILL.md +2 -0
- package/skills/platform-custom-field-generate/SKILL.md +8 -6
- package/skills/platform-custom-metadata-type-generate/SKILL.md +460 -0
- package/skills/platform-custom-metadata-type-generate/references/cmdt-records.md +251 -0
- package/skills/platform-custom-metadata-type-generate/scripts/sanitize-developer-name.sh +46 -0
- package/skills/platform-custom-setting-generate/SKILL.md +419 -0
- package/skills/platform-dataspace-access-configure/SKILL.md +3 -3
- package/skills/platform-sharing-owd-configure/SKILL.md +3 -0
- package/skills/platform-value-set-generate/SKILL.md +2 -0
- package/skills/service-agentforce-channel-configure/SKILL.md +29 -20
- package/skills/service-agentforce-channel-configure/assets/BotEmailDefinition.botEmailDefinition-meta.xml +36 -0
- package/skills/service-agentforce-channel-configure/assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email +17 -0
- package/skills/service-agentforce-channel-configure/assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email-meta.xml +29 -0
- package/skills/service-agentforce-channel-configure/assets/mdapi-package.xml +25 -0
- package/skills/service-agentforce-channel-configure/assets/settings-mdapi-package.xml +30 -0
- package/skills/service-agentforce-channel-configure/references/agent-wiring.md +20 -0
- package/skills/service-agentforce-channel-configure/references/botemaildefinition.md +107 -0
- package/skills/service-agentforce-channel-configure/references/channel-branch-email.md +203 -50
- package/skills/service-agentforce-channel-configure/references/channel-types.md +30 -3
- package/skills/service-agentforce-channel-configure/references/queue-resolution.md +17 -8
- package/skills/service-agentforce-channel-configure/references/routing-flow.md +14 -3
- package/skills/service-agentforce-channel-configure/scripts/validate-botemaildefinition.py +126 -0
- package/skills/service-agentforce-channel-configure/scripts/validate-emailtemplate.py +133 -0
- package/skills/service-de-channel-activate/SKILL.md +271 -0
- package/skills/service-de-channel-activate/references/gotchas.md +31 -0
- package/skills/service-de-channel-activate/references/phone-verification.md +96 -0
- package/skills/service-de-channel-activate/references/worked-examples.md +14 -0
- package/skills/service-de-channel-consent-configure/SKILL.md +230 -0
- package/skills/service-de-channel-consent-configure/references/gotchas.md +41 -0
- package/skills/service-de-channel-consent-configure/references/language-keywords.md +84 -0
- package/skills/service-de-channel-consent-configure/references/worked-examples.md +134 -0
- package/skills/service-de-channel-create/SKILL.md +369 -0
- package/skills/service-de-channel-create/references/apple.md +59 -0
- package/skills/service-de-channel-create/references/connect-insert.md +84 -0
- package/skills/service-de-channel-create/references/facebook.md +154 -0
- package/skills/service-de-channel-create/references/line.md +66 -0
- package/skills/service-de-channel-create/references/sms.md +98 -0
- package/skills/service-de-channel-create/references/whatsapp.md +98 -0
- package/skills/service-de-channel-create/references/worked-examples.md +70 -0
- package/skills/service-de-channel-routing-configure/SKILL.md +345 -0
- package/skills/service-de-channel-routing-configure/references/asa-routing.md +90 -0
- package/skills/service-de-channel-routing-configure/references/gotchas.md +27 -0
- package/skills/service-de-channel-routing-configure/references/queue-creation.md +123 -0
- package/skills/service-de-channel-routing-configure/references/target-locate.md +98 -0
- package/skills/service-de-channel-routing-configure/references/worked-examples.md +174 -0
- package/skills/service-de-headless-channel-configure/SKILL.md +305 -0
- package/skills/service-de-headless-channel-configure/references/gotchas.md +27 -0
- package/skills/service-de-headless-channel-configure/references/inputs.md +49 -0
- package/skills/service-de-headless-channel-configure/references/output-envelopes.md +53 -0
- package/skills/service-de-headless-channel-configure/references/partial-success.md +24 -0
- package/skills/service-de-headless-channel-configure/references/terms-and-conditions.md +54 -0
- package/skills/service-de-headless-channel-configure/references/worked-examples.md +108 -0
- package/skills/service-de-waba-integrate/SKILL.md +227 -0
- package/skills/service-digital-engagement-channel-configure/scripts/check-api-version.sh +29 -0
- package/skills/service-digital-engagement-messaging-site-integrate/SKILL.md +10 -9
- package/skills/service-digital-engagement-messaging-site-integrate/references/lwr_patch.md +39 -21
- package/skills/service-digital-engagement-messaging-site-integrate/scripts/patch_lwr_bundle.sh +157 -96
- package/skills/service-email-to-case-configure/SKILL.md +190 -0
- package/skills/service-email-to-case-configure/assets/CaseSettings.settings-meta.xml +45 -0
- package/skills/service-email-to-case-configure/examples/CaseSettings-two-addresses.settings-meta.xml +36 -0
- package/skills/service-email-to-case-configure/references/apply-mechanics.md +73 -0
- package/skills/service-email-to-case-configure/references/routing_address_reference.md +73 -0
- package/skills/service-email-to-case-configure/references/troubleshooting.md +25 -0
- package/skills/service-email-to-case-configure/scripts/apply-casesettings.py +1315 -0
- package/skills/service-email-to-case-configure/scripts/check-agent-email-capability.sh +26 -0
- package/skills/service-email-to-case-configure/scripts/tests/__init__.py +0 -0
- package/skills/service-email-to-case-configure/scripts/tests/_bootstrap.py +45 -0
- package/skills/service-email-to-case-configure/scripts/tests/_fakeorg.py +366 -0
- package/skills/service-email-to-case-configure/scripts/tests/_run.py +84 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_apply_org_scenarios.py +655 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_get_session.py +134 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_new_capabilities.py +193 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_validate_casesettings.py +170 -0
- package/skills/service-email-to-case-configure/scripts/validate-casesettings.py +229 -0
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +33 -15
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +63 -47
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +17 -12
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/references/cli-invocation.md +5 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/scripts/classify-enable-plan.mjs +11 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/SKILL.md +8 -6
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/references/cli-invocation.md +3 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/scripts/classify-readiness.mjs +11 -3
- package/skills/service-itsm-agentic-setup-configure/SKILL.md +5 -5
- package/skills/service-itsm-agentic-setup-configure/examples/output-templates.md +5 -5
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +2 -2
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +11 -7
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +20 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +10 -6
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/action-availability.md +7 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +11 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/build-create-body.mjs +24 -17
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-action-availability.mjs +98 -58
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +20 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/strip-release-management.mjs +176 -0
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/SKILL.md +19 -19
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/cli-invocation.md +3 -4
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/helper-contracts.md +6 -6
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/permset-topology.md +3 -10
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/scripts/classify-permset-availability.mjs +7 -9
- package/skills/service-itsm-incident-mgmt-configure/SKILL.md +2 -0
- package/skills/service-itsm-incident-priority-configure/SKILL.md +15 -12
- package/skills/service-itsm-incident-priority-configure/examples/matrix-operations.md +27 -1
- package/skills/service-itsm-incident-priority-configure/references/sf-cli-invocation.md +37 -6
- package/skills/service-native-voice-recording-transcription-configure/SKILL.md +146 -0
- package/skills/service-native-voice-recording-transcription-configure/assets/confirmation-output.json +16 -0
- package/skills/service-native-voice-recording-transcription-configure/assets/package.xml +22 -0
- package/skills/service-native-voice-recording-transcription-configure/references/thunderbird-voice-settings.md +101 -0
- package/skills/service-native-voice-recording-transcription-configure/scripts/enable-recording-transcription.sh +181 -0
- package/skills/data360-activate/README.md +0 -38
- package/skills/data360-activate/SKILL.md +0 -127
- package/skills/data360-connect/README.md +0 -57
- package/skills/data360-connect/SKILL.md +0 -163
- package/skills/data360-connect/examples/connections/heroku-postgres.json +0 -15
- package/skills/data360-connect/examples/connections/ingest-api-connection.json +0 -5
- package/skills/data360-connect/examples/connections/ingest-api-schema.json +0 -31
- package/skills/data360-connect/examples/connections/redshift.json +0 -16
- package/skills/data360-connect/examples/connections/sharepoint-unstructured.json +0 -20
- package/skills/data360-connect/examples/connections/snowflake-connection.json +0 -42
- package/skills/data360-harmonize/README.md +0 -31
- package/skills/data360-harmonize/SKILL.md +0 -126
- package/skills/data360-orchestrate/README.md +0 -120
- package/skills/data360-orchestrate/SKILL.md +0 -263
- package/skills/data360-orchestrate/assets/definitions/activation-target.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/activation.template.json +0 -7
- package/skills/data360-orchestrate/assets/definitions/calculated-insight.template.json +0 -7
- package/skills/data360-orchestrate/assets/definitions/data-action-target.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/data-action.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/data-graph.template.json +0 -21
- package/skills/data360-orchestrate/assets/definitions/data-stream.template.json +0 -55
- package/skills/data360-orchestrate/assets/definitions/dmo.template.json +0 -17
- package/skills/data360-orchestrate/assets/definitions/identity-resolution.template.json +0 -30
- package/skills/data360-orchestrate/assets/definitions/mapping.template.json +0 -14
- package/skills/data360-orchestrate/assets/definitions/relationship.template.json +0 -12
- package/skills/data360-orchestrate/assets/definitions/search-index.template.json +0 -9
- package/skills/data360-orchestrate/assets/definitions/segment.template.json +0 -16
- package/skills/data360-orchestrate/references/feature-readiness.md +0 -157
- package/skills/data360-orchestrate/references/plugin-setup.md +0 -138
- package/skills/data360-orchestrate/scripts/bootstrap-plugin.sh +0 -53
- package/skills/data360-orchestrate/scripts/diagnose-org.mjs +0 -511
- package/skills/data360-orchestrate/scripts/generate-manifest.mjs +0 -68
- package/skills/data360-orchestrate/scripts/verify-plugin.sh +0 -58
- package/skills/data360-prepare/README.md +0 -50
- package/skills/data360-prepare/SKILL.md +0 -203
- package/skills/data360-prepare/examples/ingestion-api/.env.example +0 -8
- package/skills/data360-prepare/examples/ingestion-api/README.md +0 -48
- package/skills/data360-prepare/examples/ingestion-api/send-data.py +0 -144
- package/skills/data360-query/README.md +0 -43
- package/skills/data360-query/SKILL.md +0 -128
- package/skills/data360-query/examples/search-indexes/hybrid-structured.json +0 -44
- package/skills/data360-query/examples/search-indexes/vector-knowledge.json +0 -43
- package/skills/data360-segment/README.md +0 -35
- package/skills/data360-segment/SKILL.md +0 -123
- package/skills/service-helpagent-coordinate/references/channel-help-portal.md +0 -22
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-1-1-non-text-content.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-i-lists.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-ii-tables.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-iii-form-labels.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-iv-regions.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-v-groups.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-5-identify-input.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-4-3-contrast.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-1-1-keyboard.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-4-4-link-purpose.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-4-6-headings-labels.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-3-label-in-name.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-7-dragging-movement.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-2-1-on-focus.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-2-2-on-input.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-1-error-identification.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-2-labels-instructions.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-3-error-suggestion.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-i-name.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-ii-role.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-iii-value.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-1-1-non-text-content.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-1-use-of-color.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-10-resize-reflow.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-11-non-text-contrast.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-3-contrast.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/scripts/contrast-ratio.py +0 -0
package/skills/service-email-to-case-configure/examples/CaseSettings-two-addresses.settings-meta.xml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
Example: Email-to-Case enabled with two routing addresses (EmailToCase + Outlook).
|
|
4
|
+
This is the source-file shape that apply-casesettings.py consumes.
|
|
5
|
+
|
|
6
|
+
Note what is and is NOT here:
|
|
7
|
+
1. The two required emailToCase switches (enableEmailToCase + enableOnDemandEmailToCase)
|
|
8
|
+
and, on each address, the required addressType / routingName / caseOrigin / casePriority.
|
|
9
|
+
2. NO emailAddress on either address. The customer-facing emails are supplied at apply
|
|
10
|
+
time via one routing-email option per address, in this document order (first the
|
|
11
|
+
Support Inbox email, then the Sales Outlook Inbox email). See SKILL.md step 9.
|
|
12
|
+
3. Support Settings (Default Case Owner / Automated Case User) appear here only when the
|
|
13
|
+
user names them — this example names none, so none are set. When named, write the
|
|
14
|
+
paired fields (defaultCaseOwner + defaultCaseOwnerType, etc.); fields the org already
|
|
15
|
+
has are preserved when omitted. Never defaulted to the authenticated user.
|
|
16
|
+
-->
|
|
17
|
+
<CaseSettings xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
18
|
+
<emailToCase>
|
|
19
|
+
<enableEmailToCase>true</enableEmailToCase>
|
|
20
|
+
<enableOnDemandEmailToCase>true</enableOnDemandEmailToCase>
|
|
21
|
+
<routingAddresses>
|
|
22
|
+
<addressType>EmailToCase</addressType>
|
|
23
|
+
<routingName>Support Inbox</routingName>
|
|
24
|
+
<caseOrigin>Email</caseOrigin>
|
|
25
|
+
<casePriority>Medium</casePriority>
|
|
26
|
+
<createTask>false</createTask>
|
|
27
|
+
<saveEmailHeaders>true</saveEmailHeaders>
|
|
28
|
+
</routingAddresses>
|
|
29
|
+
<routingAddresses>
|
|
30
|
+
<addressType>Outlook</addressType>
|
|
31
|
+
<routingName>Sales Outlook Inbox</routingName>
|
|
32
|
+
<caseOrigin>Email</caseOrigin>
|
|
33
|
+
<casePriority>High</casePriority>
|
|
34
|
+
</routingAddresses>
|
|
35
|
+
</emailToCase>
|
|
36
|
+
</CaseSettings>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Email-to-Case Apply Mechanics (why the write is shaped this way)
|
|
2
|
+
|
|
3
|
+
Load-bearing design rationale behind `apply-casesettings.py`. Read this before changing
|
|
4
|
+
how the script builds or sequences its `updateMetadata` payloads. Do not substitute a
|
|
5
|
+
plain deploy or a minimal patch.
|
|
6
|
+
|
|
7
|
+
## Why two phases (and not a single file-based deploy)
|
|
8
|
+
|
|
9
|
+
Enabling On-Demand Email-to-Case provisions the org's internal email-service
|
|
10
|
+
infrastructure, and a routing address can only bind to that infrastructure in a
|
|
11
|
+
**subsequent** operation. A single file-based deploy (`sf project deploy`) that both
|
|
12
|
+
enables On-Demand and declares a routing address **fails on a freshly-configured org** —
|
|
13
|
+
verified on clean orgs. `apply-casesettings.py` therefore reads current settings, applies
|
|
14
|
+
the **complete `emailToCase` block** (toggles) plus Support Settings in one `updateMetadata`
|
|
15
|
+
call (Phase A), then re-reads and appends routing addresses in a second call (Phase B).
|
|
16
|
+
|
|
17
|
+
## Two load-bearing properties of the write
|
|
18
|
+
|
|
19
|
+
- **Send the whole `emailToCase` block, not a minimal patch.** Provisioning the On-Demand
|
|
20
|
+
email service is driven by writing the full `emailToCase` block. A minimal field-level
|
|
21
|
+
patch that just flips `enableOnDemandEmailToCase` to `true` does **not** trigger
|
|
22
|
+
provisioning, so Phase B then fails with "We couldn't save your routing address... custom
|
|
23
|
+
email services named EmailToCase." (Verified from scratch on a clean org.)
|
|
24
|
+
- **Send only the top-level fields this skill owns; strip the rest.** The platform
|
|
25
|
+
re-validates any top-level `CaseSettings` field present in the payload, even at an
|
|
26
|
+
unchanged value — and several (notably Case Feed) carry dependencies unrelated to
|
|
27
|
+
Email-to-Case (Case Feed re-validation requires Chatter). `apply-casesettings.py` writes
|
|
28
|
+
only the fields it sets (`emailToCase`, `enableDraftEmails`, and Support Settings) and
|
|
29
|
+
drops every other top-level field, which keeps its current org value via field-level
|
|
30
|
+
merge. This is why the skill needs **no Chatter prerequisite** and does not fail on
|
|
31
|
+
unrelated org Case configuration. (Verified from scratch on a Chatter-off org: stripping
|
|
32
|
+
all other top-level fields still provisioned and bound a routing address, and the omitted
|
|
33
|
+
fields — e.g. `enableCaseFeed` — kept their values.)
|
|
34
|
+
|
|
35
|
+
This is the validated mechanism; do not substitute a plain deploy, do not reduce the
|
|
36
|
+
`emailToCase` write to a minimal patch, and do not echo the full record back verbatim.
|
|
37
|
+
|
|
38
|
+
## Support Settings are preserved per field, via field-level merge
|
|
39
|
+
|
|
40
|
+
Default Case Owner (`defaultCaseOwner` / `defaultCaseOwnerType`) and Automated Case User
|
|
41
|
+
(`defaultCaseUser` / `useSystemUserAsDefaultCaseUser`) are **independent** top-level
|
|
42
|
+
`CaseSettings` fields — an org can have one configured and the other not. Because top-level
|
|
43
|
+
fields merge at the field level (an omitted field keeps its current org value), the script
|
|
44
|
+
**preserves a configured field by simply not emitting it** in the payload, and writes only
|
|
45
|
+
the field(s) that are unset (or that the caller explicitly overwrites with
|
|
46
|
+
`--overwrite-support-settings`). It therefore requires — and validates — input **only** for
|
|
47
|
+
the field being written; supplying a value for an already-configured field without the
|
|
48
|
+
overwrite flag leaves the existing value untouched. This is why a single "both configured?"
|
|
49
|
+
gate is wrong: on a partially-configured org it would either demand the already-set value or
|
|
50
|
+
silently overwrite it. `apply_support_settings` branches the owner and automated-user fields
|
|
51
|
+
separately for exactly this reason.
|
|
52
|
+
|
|
53
|
+
## Routing-address ordering (multi-address preservation)
|
|
54
|
+
|
|
55
|
+
The `updateMetadata` call **replaces the `routingAddresses` collection wholesale**.
|
|
56
|
+
An already-provisioned address is **dropped** if a brand-new address follows it in
|
|
57
|
+
document order. Therefore the script **emits new addresses before** the carried-over
|
|
58
|
+
existing ones, so existing addresses always survive.
|
|
59
|
+
|
|
60
|
+
The platform-managed read-only fields (`emailServicesAddress` / `isVerified`) do **not**
|
|
61
|
+
affect this — only document order does. As defensive hygiene the script still strips those
|
|
62
|
+
read-only fields from the payload (the platform mints them), but stripping is not the
|
|
63
|
+
preservation mechanism; ordering is. A runtime **preservation guard** baselines the
|
|
64
|
+
expected address count (`initial address count + created count`) captured before Phase A and
|
|
65
|
+
**fails the run loudly** if any existing address is dropped anyway.
|
|
66
|
+
|
|
67
|
+
## API version derivation
|
|
68
|
+
|
|
69
|
+
The Metadata API version is `max(org apiVersion, 67.0)` — derived from the org and floored
|
|
70
|
+
at the skill's `minApiVersion` (`67.0`). This keeps every field the skill sets valid while
|
|
71
|
+
auto-adopting newer org features (e.g. a v68+ org that supports the `botEmailDefinition`
|
|
72
|
+
binding for Agentforce for Service on Email is picked up automatically). It never claims a
|
|
73
|
+
version the org doesn't report. `--api-version` forces a specific value.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# EmailToCaseRoutingAddress — Field & Surface Reference
|
|
2
|
+
|
|
3
|
+
Each routing address is one `<routingAddresses>` element inside `CaseSettings.emailToCase`.
|
|
4
|
+
|
|
5
|
+
## Prerequisites (before routing addresses can be created)
|
|
6
|
+
|
|
7
|
+
`apply-casesettings.py` applies these in Phase A, before adding any routing address in Phase B. The two `emailToCase` switches are required. On-Demand Email-to-Case requires a Default Case Owner and an Automated Case User to be set: write the values the user names into the source file (the scored, versionable artifact); the script also accepts them as flags and preserves any the org already has (see below).
|
|
8
|
+
|
|
9
|
+
| Field | Level | Notes |
|
|
10
|
+
|-------|-------|-------|
|
|
11
|
+
| `defaultCaseOwner` | `CaseSettings` | Fallback owner for cases assignment rules can't route. **Preserved if the org already has it.** When not configured, the script requires an explicit, org-validated value: a Username (`defaultCaseOwnerType=User`) or a Queue DeveloperName (`defaultCaseOwnerType=Queue`). Never assumed. |
|
|
12
|
+
| `defaultCaseOwnerType` | `CaseSettings` | `User` or `Queue`. Selects how `defaultCaseOwner` is resolved (Username vs Queue DeveloperName). No silent default — supplied with the owner value. |
|
|
13
|
+
| `defaultCaseUser` | `CaseSettings` | The **Automated Case User** recorded in Case History for automated Email-to-Case changes. A specific active Username. Mutually exclusive with `useSystemUserAsDefaultCaseUser`. |
|
|
14
|
+
| `useSystemUserAsDefaultCaseUser` | `CaseSettings` | Set `true` to use the org's **System** (automated process) user as the Automated Case User instead of a named user. Do **not** also set `defaultCaseUser` (platform error). API 67.0+. |
|
|
15
|
+
| `systemUserEmail` | `CaseSettings` | Email for the automated process user, required with `useSystemUserAsDefaultCaseUser=true` only when the org's automated case user doesn't exist yet. |
|
|
16
|
+
| `enableEmailToCase` | `emailToCase` | Master switch. Cannot be disabled once enabled. |
|
|
17
|
+
| `enableOnDemandEmailToCase` | `emailToCase` | Must be `true` before the org accepts routing addresses. Requires the Default Case Owner + Automated Case User above. |
|
|
18
|
+
|
|
19
|
+
**Support-settings resolution (Phase A).** The script reads current settings first. If the Default Case Owner or Automated Case User is already configured in the org, it is **preserved** untouched (pass `--overwrite-support-settings` to replace it). For a field the user names, write the value into the source file — `defaultCaseOwner` + `defaultCaseOwnerType`; `defaultCaseUser`, or `useSystemUserAsDefaultCaseUser` (+ optional `systemUserEmail`) — since the file is the scored, versionable artifact; the script also accepts the same values as flags (`--owner-type`/`--owner-value`, `--automated-type`/`--automated-value`, `--system-user-email`). Each value is validated against the org — an unknown user or queue, or an invalid type, fails the run with an actionable message so the caller can re-prompt. For a field that is unset **and** unnamed, ask; the authenticated CLI user is used **only** with `--use-authenticated-user`.
|
|
20
|
+
|
|
21
|
+
## Surface selection by `addressType`
|
|
22
|
+
|
|
23
|
+
`addressType` is the gating decision — it determines whether the address can be created via the Metadata API at all.
|
|
24
|
+
|
|
25
|
+
| `addressType` | Surface | Notes |
|
|
26
|
+
|---------------|---------|-------|
|
|
27
|
+
| `EmailToCase` | **Metadata API** | The standard case. Requires out-of-band verification of the Salesforce-generated forwarding address before it receives production mail. |
|
|
28
|
+
| `Outlook` | **Metadata API** | Used with Salesforce for Outlook. Requires On-Demand Email-to-Case enabled. |
|
|
29
|
+
| `GmailOAuth` | **Metadata API** | Gmail connector. Only one GmailOAuth connector is supported — do not stack a second. |
|
|
30
|
+
| `E2cEasy` | **Service Easy Setup wizard ONLY** | The wizard binds the address to the prebuilt `service_case` queue and completes email round-trip verification. Neither the queue binding nor `isVerified` can be reproduced by a Metadata API deploy. Do not emit Metadata for this type. |
|
|
31
|
+
|
|
32
|
+
## Writable fields
|
|
33
|
+
|
|
34
|
+
| Field | Type | Notes |
|
|
35
|
+
|-------|------|-------|
|
|
36
|
+
| `addressType` | enum | Required. One of `EmailToCase`, `Outlook`, `GmailOAuth` (see surface table for `E2cEasy`). |
|
|
37
|
+
| `routingName` | string | Required. Unique label for the routing address. The platform rewrites this to equal the email address for `EmailToCase` addresses. |
|
|
38
|
+
| `caseOrigin` | string | **Required.** Default Case Origin for cases from this address. The operation fails with "Missing caseOrigin" if omitted. |
|
|
39
|
+
| `casePriority` | string | **Required.** Default Case Priority. The operation fails with "Missing casePriority" if omitted. |
|
|
40
|
+
| `caseOwner` | string | **Optional, opt-in per address.** Default owner for cases from this address — an active Username or a Queue DeveloperName. Omit it (the default) to fall back to the org Default Case Owner / assignment rules; set it only when the user chooses a specific owner for this address. **Must** be paired with `caseOwnerType` — the platform rejects `caseOwner` without it. `apply-casesettings.py` validates the value against the org (active user / real queue) and fails closed if it doesn't exist. |
|
|
41
|
+
| `caseOwnerType` | string | `User` or `Queue` — how `caseOwner` is resolved (Username vs Queue DeveloperName). Required whenever `caseOwner` is set; not written on its own. |
|
|
42
|
+
| `createTask` | boolean | If `true`, a task is auto-assigned to the case owner on case creation. |
|
|
43
|
+
| `taskStatus` | string | Default status for the auto-created task. Applies only when `createTask` is `true`. |
|
|
44
|
+
| `authorizedSenders` | string | Comma-separated addresses/domains allowed to submit email (On-Demand E2C). |
|
|
45
|
+
| `saveEmailHeaders` | boolean | Whether routing/envelope headers are saved. |
|
|
46
|
+
| `newEntityRecordType` | string | Case Record Type for cases from this address; defaults to the org's default Case Record Type. Must exist and be active on Case. |
|
|
47
|
+
| `routingFlow` | string | Omni-Channel flow that routes generated cases (API 56.0+). |
|
|
48
|
+
| `fallbackQueue` | string | Queue used when the Omni-Channel flow can't route; must use Case as the service channel object (API 56.0+). |
|
|
49
|
+
| `isPermsetControlled` | boolean | If `true`, only users granted access via a permission set can use the address (API 61.0+). |
|
|
50
|
+
|
|
51
|
+
## Supplied at apply time — never in the source file
|
|
52
|
+
|
|
53
|
+
| Field | Why |
|
|
54
|
+
|-------|-----|
|
|
55
|
+
| `emailAddress` | The customer-facing address that routes email into cases. Supplied via `--routing-email` (one per address, in document order), never written in the source file — this keeps the address explicit user input and out of a reusable artifact. The validator rejects a source file that sets it. |
|
|
56
|
+
|
|
57
|
+
## Read-only fields — never write values for these
|
|
58
|
+
|
|
59
|
+
| Field | Why |
|
|
60
|
+
|-------|-----|
|
|
61
|
+
| `emailServicesAddress` | Salesforce-generated forwarding address. Read-only; set by the platform. |
|
|
62
|
+
| `isVerified` | Set by the customer's verification flow (clicking the confirmation email). Read-only; cannot be flipped by an apply. |
|
|
63
|
+
|
|
64
|
+
## Optional org-level `emailToCase` toggles
|
|
65
|
+
|
|
66
|
+
Set these only when the user asks. `enableEmailToCase` and `enableOnDemandEmailToCase` are the required ones (see Prerequisites).
|
|
67
|
+
|
|
68
|
+
| Field | Type | Notes |
|
|
69
|
+
|-------|------|-------|
|
|
70
|
+
| `enableHtmlEmail` | boolean | Enables HTML email. |
|
|
71
|
+
| `enableE2CSourceTracking` | boolean | Sets Case Source to Email for E2C-originated cases. |
|
|
72
|
+
| `overEmailLimitAction` | enum | `Bounce` \| `Discard` \| `Requeue` — action when the daily E2C limit is exceeded. |
|
|
73
|
+
| `unauthorizedSenderAction` | enum | `Bounce` \| `Discard` — action for email from invalid senders. |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Email-to-Case — Troubleshooting
|
|
2
|
+
|
|
3
|
+
Full symptom → resolution table for `apply-casesettings.py`. Read this when the apply
|
|
4
|
+
or verify step reports an error, or when configured settings don't behave as expected.
|
|
5
|
+
|
|
6
|
+
| Issue | Resolution |
|
|
7
|
+
|-------|------------|
|
|
8
|
+
| Routing address fails on a fresh org with a single deploy | Use `apply-casesettings.py` — it enables the toggles (Phase A) before adding addresses (Phase B). A plain `sf project deploy` cannot provision addresses from scratch. |
|
|
9
|
+
| Phase B fails: "We couldn't save your routing address... custom email services named EmailToCase" | The On-Demand email service was not provisioned. This happens if the On-Demand toggle was set with a minimal field-level patch instead of writing the complete `emailToCase` block. `apply-casesettings.py` writes the full `emailToCase` block in Phase A specifically to provision it; do not reduce the write to a minimal patch. |
|
|
10
|
+
| Apply fails: "The setup requirements for Case Feed Items has to be enabled" | Only happens if the payload includes top-level Case Feed fields (`enableCaseFeed` etc.), which the platform re-validates against Chatter. `apply-casesettings.py` strips all top-level fields it does not own, so it should never hit this. If you see it, confirm the script's `KEEP_TOP_LEVEL_FIELDS` set hasn't been widened to include Case Feed fields. |
|
|
11
|
+
| `--routing-email` count doesn't match the addresses | The script exits non-zero without writing. Provide exactly one `--routing-email` per routing address, in the order they appear in the source file. |
|
|
12
|
+
| Platform rewrites `routingName` to equal `emailAddress` | Expected for `EmailToCase` addresses. The verify read will show `routingName` == the supplied email; this is the platform's behavior, not an error. |
|
|
13
|
+
| Apply fails: "not an active User" / "not a Queue" / "not valid" for owner or automated user | The value the user supplied doesn't exist in the org (or the type is wrong). This is intentional fail-closed behavior — tell the user the value is invalid, ask for a valid Username / Queue DeveloperName / type, and re-run. Do not substitute the authenticated user. |
|
|
14
|
+
| Apply/validate fails: "caseOwner is still the placeholder" or "sets caseOwner without caseOwnerType" on a routing address | A per-address Default Case Owner was left half-filled. Either supply a real value **and** its `caseOwnerType` (`User`/`Queue`), or remove both `caseOwner` and `caseOwnerType` from that address to fall back to the org Default Case Owner. The per-address owner is opt-in — omit it unless the user asked for a specific owner. |
|
|
15
|
+
| Support settings unexpectedly unchanged | The org already had a Default Case Owner + Automated Case User, so they were preserved (`supportSettings.action: preserved-existing`). Pass `--overwrite-support-settings` only if the user explicitly wants to replace them. |
|
|
16
|
+
| Requested address is `GmailOAuth` but org already has one | `GmailOAuth` connectors conflict; do not stack a second. Confirm the existing connector before adding. |
|
|
17
|
+
| `E2cEasy` requested via Metadata | Not supported by the Metadata API — direct the user to the Service Easy Setup wizard. |
|
|
18
|
+
| New address doesn't receive production mail | For `EmailToCase`, the customer must verify the Salesforce-generated forwarding address out-of-band; `isVerified` is read-only and set by that flow, not by the apply. |
|
|
19
|
+
| Org not authenticated / token expired | The script reuses the sf CLI session. Have the user run `sf org login web -a <alias>` (or re-auth) first. |
|
|
20
|
+
| Apply exits: "Target org appears to be PRODUCTION" | The safety gate fired. Confirm with the user that they intend to configure Email-to-Case on this production org (it's permanent), then re-run with `--confirm-production`. Do not add the flag without asking. |
|
|
21
|
+
| Apply exits: "Could not determine whether this is a production org" | The `Organization` row wasn't readable, so the gate fails closed and treats the org as production. Confirm the org is safe to mutate, then re-run with `--confirm-production`. |
|
|
22
|
+
| `--verify-cases` exits non-zero: "No Cases with Origin='Email'" | The inbound test email hasn't been processed yet, the routing address isn't verified, or `--supplied-email` excludes it. The check looks back over `LAST_N_DAYS:3`, so a test email older than that window won't match — send a fresh one. Confirm the user actually sent the email, wait a moment, and re-run. Drop `--supplied-email` if it over-narrows. |
|
|
23
|
+
| `--verify-cases` finds a Case but no incoming `EmailMessage` | The Case may have been created another way (not inbound email). Re-run once the inbound email has been processed; proof requires `Incoming=true` linked to the Case. |
|
|
24
|
+
| "Enable Email Drafts" toggle silently ignored | The element name is `enableDraftEmails` (plural) and lives at the **top level** of `CaseSettings`, not inside `emailToCase`. A singular name or wrong container is ignored by the platform. |
|
|
25
|
+
| An `emailToCase` toggle doesn't take effect | Confirm it belongs in the `emailToCase` section, not top-level. `enableHtmlEmail`, `notifyOwnerOnNewCaseEmail`, `enableE2CDeduplicateAttachments`, and `showWordCountInComposer` are all `emailToCase` children; check the `verified.emailToCase.<field>` value in the JSON summary. |
|