@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.
Files changed (288) hide show
  1. package/package.json +2 -6
  2. package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +3 -0
  3. package/skills/automation-sandbox-post-copy-configure/SKILL.md +4 -0
  4. package/skills/design-systems-slds-validate/SKILL.md +2 -2
  5. package/skills/dx-app-analytics-query/SKILL.md +1 -3
  6. package/skills/dx-devops-conflict-resolve/SKILL.md +205 -0
  7. package/skills/dx-devops-conflict-resolve/examples/conflict-workflows.md +165 -0
  8. package/skills/dx-devops-conflict-resolve/references/deploy-failure-resolution.md +75 -0
  9. package/skills/dx-devops-conflict-resolve/references/git-conflict-resolution.md +124 -0
  10. package/skills/dx-devops-conflict-resolve/scripts/detect-conflicts.sh +91 -0
  11. package/skills/dx-devops-conflict-resolve/scripts/diagnose-deploy-failure.sh +156 -0
  12. package/skills/dx-devops-request-status/SKILL.md +160 -0
  13. package/skills/dx-devops-request-status/examples/polling-workflows.md +101 -0
  14. package/skills/dx-devops-request-status/references/cli-commands.md +176 -0
  15. package/skills/dx-devops-request-status/scripts/poll-status.sh +134 -0
  16. package/skills/dx-devops-test-failures-analyze/SKILL.md +6 -6
  17. package/skills/dx-devops-test-pipeline-configure/SKILL.md +7 -7
  18. package/skills/dx-devops-test-suite-assignments-configure/SKILL.md +6 -6
  19. package/skills/dx-devops-test-suite-run/SKILL.md +6 -6
  20. package/skills/dx-devops-work-item-manage/SKILL.md +2 -0
  21. package/skills/dx-org-manage/references/creating-scratch-org.md +5 -2
  22. package/skills/dx-org-manage/references/creating-snapshot.md +1 -0
  23. package/skills/dx-org-shape-manage/SKILL.md +152 -0
  24. package/skills/dx-org-shape-manage/examples/create_error_output.json +9 -0
  25. package/skills/dx-org-shape-manage/examples/create_success_output.json +9 -0
  26. package/skills/dx-org-shape-manage/examples/delete_output.json +11 -0
  27. package/skills/dx-org-shape-manage/examples/list_inactive_output.json +32 -0
  28. package/skills/dx-org-shape-manage/examples/list_output.json +24 -0
  29. package/skills/dx-org-shape-manage/references/cli_flags.md +135 -0
  30. package/skills/dx-org-switch/SKILL.md +2 -2
  31. package/skills/dx-org-trial-expiration-check/SKILL.md +2 -0
  32. package/skills/dx-pkg-post-install-configure/SKILL.md +3 -0
  33. package/skills/education-cloud-multi-campus-configure/SKILL.md +211 -0
  34. package/skills/education-cloud-multi-campus-configure/examples/hierarchy_visualization.md +174 -0
  35. package/skills/education-cloud-multi-campus-configure/examples/output_examples.md +54 -0
  36. package/skills/education-cloud-multi-campus-configure/examples/sample_hierarchy_input.csv +29 -0
  37. package/skills/education-cloud-multi-campus-configure/examples/sample_hierarchy_input_edgecases.csv +16 -0
  38. package/skills/education-cloud-multi-campus-configure/references/account_recordtype_prerequisite.md +44 -0
  39. package/skills/education-cloud-multi-campus-configure/references/delta_computation.md +33 -0
  40. package/skills/education-cloud-multi-campus-configure/references/error_handling.md +198 -0
  41. package/skills/education-cloud-multi-campus-configure/references/foundation_prerequisites.md +54 -0
  42. package/skills/education-cloud-multi-campus-configure/references/gotchas.md +16 -0
  43. package/skills/education-cloud-multi-campus-configure/references/hierarchy_parsing_rules.md +133 -0
  44. package/skills/education-cloud-multi-campus-configure/references/mcp-invocation.md +75 -0
  45. package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/SKILL.md +1 -1
  46. package/skills/experience-cms-brand-apply/SKILL.md +4 -1
  47. package/skills/experience-cms-brand-create/SKILL.md +197 -0
  48. package/skills/experience-cms-brand-create/assets/brand-template.json +329 -0
  49. package/skills/experience-cms-brand-create/references/brand-anatomy.md +120 -0
  50. package/skills/experience-cms-brand-create/references/disk-contract.md +84 -0
  51. package/skills/experience-cms-content-generate/SKILL.md +190 -0
  52. package/skills/experience-cms-content-generate/assets/display-formats.md +84 -0
  53. package/skills/experience-cms-content-generate/assets/payloads/create-content-bulk.json +11 -0
  54. package/skills/experience-cms-content-generate/assets/payloads/create-content-single.json +11 -0
  55. package/skills/experience-cms-content-generate/assets/payloads/publish-content.json +4 -0
  56. package/skills/experience-cms-content-generate/assets/payloads/update-content.json +9 -0
  57. package/skills/experience-cms-content-generate/assets/questions.md +241 -0
  58. package/skills/experience-cms-content-generate/examples/create-content-call.md +81 -0
  59. package/skills/experience-cms-content-generate/references/bulk-batching.md +56 -0
  60. package/skills/experience-cms-content-generate/references/content-type-classification.md +88 -0
  61. package/skills/experience-cms-content-generate/references/content-write-tool.md +95 -0
  62. package/skills/experience-cms-content-generate/references/delegation-protocol.md +37 -0
  63. package/skills/experience-cms-content-generate/references/edit-publish-workflow.md +63 -0
  64. package/skills/experience-cms-content-generate/references/error-recovery.md +72 -0
  65. package/skills/experience-cms-content-generate/references/identifier-resolution.md +26 -0
  66. package/skills/experience-cms-content-generate/references/intent-routing.md +45 -0
  67. package/skills/experience-cms-content-generate/references/principles.md +19 -0
  68. package/skills/experience-cms-content-generate/references/ux-rules.md +68 -0
  69. package/skills/experience-cms-content-generate/references/workspace-resolution.md +33 -0
  70. package/skills/experience-cms-content-type-generate/SKILL.md +449 -0
  71. package/skills/experience-cms-content-type-generate/assets/discovery-prompts.md +79 -0
  72. package/skills/experience-cms-content-type-generate/assets/schema-example.json +70 -0
  73. package/skills/experience-cms-content-type-generate/references/agent-checklist.md +50 -0
  74. package/skills/experience-cms-content-type-generate/references/anti-patterns.md +39 -0
  75. package/skills/experience-cms-content-type-generate/references/deployment-errors.md +27 -0
  76. package/skills/experience-cms-content-type-generate/references/discovery-details.md +106 -0
  77. package/skills/experience-cms-content-type-generate/references/discovery-query-rules.md +85 -0
  78. package/skills/experience-cms-content-type-generate/references/edit-fields-loop.md +48 -0
  79. package/skills/experience-cms-content-type-generate/references/pre-deploy-checklist.md +21 -0
  80. package/skills/experience-cms-content-type-generate/references/retrieve-and-reconcile.md +105 -0
  81. package/skills/experience-cms-content-type-generate/references/schema-rules.md +51 -0
  82. package/skills/experience-cms-content-type-generate/references/schema-summary-format.md +60 -0
  83. package/skills/experience-lds-graphql-generate/SKILL.md +4 -0
  84. package/skills/experience-lwc-accessibility-jest-run/SKILL.md +79 -0
  85. package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +205 -0
  86. package/skills/experience-lwc-design-generate/SKILL.md +5 -4
  87. package/skills/experience-lwc-generate/SKILL.md +10 -9
  88. package/skills/experience-ui-bundle-deploy/references/dev-preview.md +21 -0
  89. package/skills/experience-ui-bundle-deploy/references/social-login.md +1 -0
  90. package/skills/experience-ui-bundle-file-upload-generate/SKILL.md +6 -6
  91. package/skills/experience-ui-bundle-localize/SKILL.md +30 -37
  92. package/skills/experience-ui-bundle-localize/references/gotchas.md +23 -7
  93. package/skills/experience-ui-bundle-localize/references/i18n-setup.md +48 -4
  94. package/skills/experience-ui-bundle-localize/references/label-xml.md +22 -8
  95. package/skills/experience-ui-bundle-localize/references/verifying.md +39 -11
  96. package/skills/experience-ui-bundle-localize/scripts/detect-bundle-type.sh +118 -15
  97. package/skills/experience-ui-bundle-localize/scripts/tests/test-detect-bundle-type.sh +187 -0
  98. package/skills/experience-ui-bundle-mfa-configure/SKILL.md +13 -2
  99. package/skills/experience-ui-bundle-mfa-configure/references/social-login.md +1 -0
  100. package/skills/experience-ui-bundle-project-generate/SKILL.md +2 -2
  101. package/skills/integration-connectivity-generate/SKILL.md +11 -10
  102. package/skills/integration-eventing-cdc-configure/SKILL.md +6 -6
  103. package/skills/integration-eventing-subscription-configure/SKILL.md +6 -5
  104. package/skills/mobile-platform-native-capabilities-integrate/SKILL.md +2 -2
  105. package/skills/mobile-platform-offline-validate/scripts/package.json +1 -1
  106. package/skills/platform-agentexchange-partner-offers-configure/SKILL.md +8 -8
  107. package/skills/platform-custom-application-generate/SKILL.md +2 -0
  108. package/skills/platform-custom-field-generate/SKILL.md +8 -6
  109. package/skills/platform-custom-metadata-type-generate/SKILL.md +460 -0
  110. package/skills/platform-custom-metadata-type-generate/references/cmdt-records.md +251 -0
  111. package/skills/platform-custom-metadata-type-generate/scripts/sanitize-developer-name.sh +46 -0
  112. package/skills/platform-custom-setting-generate/SKILL.md +419 -0
  113. package/skills/platform-dataspace-access-configure/SKILL.md +3 -3
  114. package/skills/platform-sharing-owd-configure/SKILL.md +3 -0
  115. package/skills/platform-value-set-generate/SKILL.md +2 -0
  116. package/skills/service-agentforce-channel-configure/SKILL.md +29 -20
  117. package/skills/service-agentforce-channel-configure/assets/BotEmailDefinition.botEmailDefinition-meta.xml +36 -0
  118. package/skills/service-agentforce-channel-configure/assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email +17 -0
  119. package/skills/service-agentforce-channel-configure/assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email-meta.xml +29 -0
  120. package/skills/service-agentforce-channel-configure/assets/mdapi-package.xml +25 -0
  121. package/skills/service-agentforce-channel-configure/assets/settings-mdapi-package.xml +30 -0
  122. package/skills/service-agentforce-channel-configure/references/agent-wiring.md +20 -0
  123. package/skills/service-agentforce-channel-configure/references/botemaildefinition.md +107 -0
  124. package/skills/service-agentforce-channel-configure/references/channel-branch-email.md +203 -50
  125. package/skills/service-agentforce-channel-configure/references/channel-types.md +30 -3
  126. package/skills/service-agentforce-channel-configure/references/queue-resolution.md +17 -8
  127. package/skills/service-agentforce-channel-configure/references/routing-flow.md +14 -3
  128. package/skills/service-agentforce-channel-configure/scripts/validate-botemaildefinition.py +126 -0
  129. package/skills/service-agentforce-channel-configure/scripts/validate-emailtemplate.py +133 -0
  130. package/skills/service-de-channel-activate/SKILL.md +271 -0
  131. package/skills/service-de-channel-activate/references/gotchas.md +31 -0
  132. package/skills/service-de-channel-activate/references/phone-verification.md +96 -0
  133. package/skills/service-de-channel-activate/references/worked-examples.md +14 -0
  134. package/skills/service-de-channel-consent-configure/SKILL.md +230 -0
  135. package/skills/service-de-channel-consent-configure/references/gotchas.md +41 -0
  136. package/skills/service-de-channel-consent-configure/references/language-keywords.md +84 -0
  137. package/skills/service-de-channel-consent-configure/references/worked-examples.md +134 -0
  138. package/skills/service-de-channel-create/SKILL.md +369 -0
  139. package/skills/service-de-channel-create/references/apple.md +59 -0
  140. package/skills/service-de-channel-create/references/connect-insert.md +84 -0
  141. package/skills/service-de-channel-create/references/facebook.md +154 -0
  142. package/skills/service-de-channel-create/references/line.md +66 -0
  143. package/skills/service-de-channel-create/references/sms.md +98 -0
  144. package/skills/service-de-channel-create/references/whatsapp.md +98 -0
  145. package/skills/service-de-channel-create/references/worked-examples.md +70 -0
  146. package/skills/service-de-channel-routing-configure/SKILL.md +345 -0
  147. package/skills/service-de-channel-routing-configure/references/asa-routing.md +90 -0
  148. package/skills/service-de-channel-routing-configure/references/gotchas.md +27 -0
  149. package/skills/service-de-channel-routing-configure/references/queue-creation.md +123 -0
  150. package/skills/service-de-channel-routing-configure/references/target-locate.md +98 -0
  151. package/skills/service-de-channel-routing-configure/references/worked-examples.md +174 -0
  152. package/skills/service-de-headless-channel-configure/SKILL.md +305 -0
  153. package/skills/service-de-headless-channel-configure/references/gotchas.md +27 -0
  154. package/skills/service-de-headless-channel-configure/references/inputs.md +49 -0
  155. package/skills/service-de-headless-channel-configure/references/output-envelopes.md +53 -0
  156. package/skills/service-de-headless-channel-configure/references/partial-success.md +24 -0
  157. package/skills/service-de-headless-channel-configure/references/terms-and-conditions.md +54 -0
  158. package/skills/service-de-headless-channel-configure/references/worked-examples.md +108 -0
  159. package/skills/service-de-waba-integrate/SKILL.md +227 -0
  160. package/skills/service-digital-engagement-channel-configure/scripts/check-api-version.sh +29 -0
  161. package/skills/service-digital-engagement-messaging-site-integrate/SKILL.md +10 -9
  162. package/skills/service-digital-engagement-messaging-site-integrate/references/lwr_patch.md +39 -21
  163. package/skills/service-digital-engagement-messaging-site-integrate/scripts/patch_lwr_bundle.sh +157 -96
  164. package/skills/service-email-to-case-configure/SKILL.md +190 -0
  165. package/skills/service-email-to-case-configure/assets/CaseSettings.settings-meta.xml +45 -0
  166. package/skills/service-email-to-case-configure/examples/CaseSettings-two-addresses.settings-meta.xml +36 -0
  167. package/skills/service-email-to-case-configure/references/apply-mechanics.md +73 -0
  168. package/skills/service-email-to-case-configure/references/routing_address_reference.md +73 -0
  169. package/skills/service-email-to-case-configure/references/troubleshooting.md +25 -0
  170. package/skills/service-email-to-case-configure/scripts/apply-casesettings.py +1315 -0
  171. package/skills/service-email-to-case-configure/scripts/check-agent-email-capability.sh +26 -0
  172. package/skills/service-email-to-case-configure/scripts/tests/__init__.py +0 -0
  173. package/skills/service-email-to-case-configure/scripts/tests/_bootstrap.py +45 -0
  174. package/skills/service-email-to-case-configure/scripts/tests/_fakeorg.py +366 -0
  175. package/skills/service-email-to-case-configure/scripts/tests/_run.py +84 -0
  176. package/skills/service-email-to-case-configure/scripts/tests/test_apply_org_scenarios.py +655 -0
  177. package/skills/service-email-to-case-configure/scripts/tests/test_get_session.py +134 -0
  178. package/skills/service-email-to-case-configure/scripts/tests/test_new_capabilities.py +193 -0
  179. package/skills/service-email-to-case-configure/scripts/tests/test_validate_casesettings.py +170 -0
  180. package/skills/service-email-to-case-configure/scripts/validate-casesettings.py +229 -0
  181. package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +33 -15
  182. package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +63 -47
  183. package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +17 -12
  184. package/skills/service-itsm-agentic-setup-agentforce-studio-configure/references/cli-invocation.md +5 -3
  185. package/skills/service-itsm-agentic-setup-agentforce-studio-configure/scripts/classify-enable-plan.mjs +11 -3
  186. package/skills/service-itsm-agentic-setup-agentforce-studio-validate/SKILL.md +8 -6
  187. package/skills/service-itsm-agentic-setup-agentforce-studio-validate/references/cli-invocation.md +3 -3
  188. package/skills/service-itsm-agentic-setup-agentforce-studio-validate/scripts/classify-readiness.mjs +11 -3
  189. package/skills/service-itsm-agentic-setup-configure/SKILL.md +5 -5
  190. package/skills/service-itsm-agentic-setup-configure/examples/output-templates.md +5 -5
  191. package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +2 -2
  192. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +11 -7
  193. package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +20 -7
  194. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +10 -6
  195. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/action-availability.md +7 -7
  196. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +11 -7
  197. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/build-create-body.mjs +24 -17
  198. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-action-availability.mjs +98 -58
  199. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +20 -7
  200. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/strip-release-management.mjs +176 -0
  201. package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/SKILL.md +19 -19
  202. package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/cli-invocation.md +3 -4
  203. package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/helper-contracts.md +6 -6
  204. package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/permset-topology.md +3 -10
  205. package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/scripts/classify-permset-availability.mjs +7 -9
  206. package/skills/service-itsm-incident-mgmt-configure/SKILL.md +2 -0
  207. package/skills/service-itsm-incident-priority-configure/SKILL.md +15 -12
  208. package/skills/service-itsm-incident-priority-configure/examples/matrix-operations.md +27 -1
  209. package/skills/service-itsm-incident-priority-configure/references/sf-cli-invocation.md +37 -6
  210. package/skills/service-native-voice-recording-transcription-configure/SKILL.md +146 -0
  211. package/skills/service-native-voice-recording-transcription-configure/assets/confirmation-output.json +16 -0
  212. package/skills/service-native-voice-recording-transcription-configure/assets/package.xml +22 -0
  213. package/skills/service-native-voice-recording-transcription-configure/references/thunderbird-voice-settings.md +101 -0
  214. package/skills/service-native-voice-recording-transcription-configure/scripts/enable-recording-transcription.sh +181 -0
  215. package/skills/data360-activate/README.md +0 -38
  216. package/skills/data360-activate/SKILL.md +0 -127
  217. package/skills/data360-connect/README.md +0 -57
  218. package/skills/data360-connect/SKILL.md +0 -163
  219. package/skills/data360-connect/examples/connections/heroku-postgres.json +0 -15
  220. package/skills/data360-connect/examples/connections/ingest-api-connection.json +0 -5
  221. package/skills/data360-connect/examples/connections/ingest-api-schema.json +0 -31
  222. package/skills/data360-connect/examples/connections/redshift.json +0 -16
  223. package/skills/data360-connect/examples/connections/sharepoint-unstructured.json +0 -20
  224. package/skills/data360-connect/examples/connections/snowflake-connection.json +0 -42
  225. package/skills/data360-harmonize/README.md +0 -31
  226. package/skills/data360-harmonize/SKILL.md +0 -126
  227. package/skills/data360-orchestrate/README.md +0 -120
  228. package/skills/data360-orchestrate/SKILL.md +0 -263
  229. package/skills/data360-orchestrate/assets/definitions/activation-target.template.json +0 -5
  230. package/skills/data360-orchestrate/assets/definitions/activation.template.json +0 -7
  231. package/skills/data360-orchestrate/assets/definitions/calculated-insight.template.json +0 -7
  232. package/skills/data360-orchestrate/assets/definitions/data-action-target.template.json +0 -5
  233. package/skills/data360-orchestrate/assets/definitions/data-action.template.json +0 -5
  234. package/skills/data360-orchestrate/assets/definitions/data-graph.template.json +0 -21
  235. package/skills/data360-orchestrate/assets/definitions/data-stream.template.json +0 -55
  236. package/skills/data360-orchestrate/assets/definitions/dmo.template.json +0 -17
  237. package/skills/data360-orchestrate/assets/definitions/identity-resolution.template.json +0 -30
  238. package/skills/data360-orchestrate/assets/definitions/mapping.template.json +0 -14
  239. package/skills/data360-orchestrate/assets/definitions/relationship.template.json +0 -12
  240. package/skills/data360-orchestrate/assets/definitions/search-index.template.json +0 -9
  241. package/skills/data360-orchestrate/assets/definitions/segment.template.json +0 -16
  242. package/skills/data360-orchestrate/references/feature-readiness.md +0 -157
  243. package/skills/data360-orchestrate/references/plugin-setup.md +0 -138
  244. package/skills/data360-orchestrate/scripts/bootstrap-plugin.sh +0 -53
  245. package/skills/data360-orchestrate/scripts/diagnose-org.mjs +0 -511
  246. package/skills/data360-orchestrate/scripts/generate-manifest.mjs +0 -68
  247. package/skills/data360-orchestrate/scripts/verify-plugin.sh +0 -58
  248. package/skills/data360-prepare/README.md +0 -50
  249. package/skills/data360-prepare/SKILL.md +0 -203
  250. package/skills/data360-prepare/examples/ingestion-api/.env.example +0 -8
  251. package/skills/data360-prepare/examples/ingestion-api/README.md +0 -48
  252. package/skills/data360-prepare/examples/ingestion-api/send-data.py +0 -144
  253. package/skills/data360-query/README.md +0 -43
  254. package/skills/data360-query/SKILL.md +0 -128
  255. package/skills/data360-query/examples/search-indexes/hybrid-structured.json +0 -44
  256. package/skills/data360-query/examples/search-indexes/vector-knowledge.json +0 -43
  257. package/skills/data360-segment/README.md +0 -35
  258. package/skills/data360-segment/SKILL.md +0 -123
  259. package/skills/service-helpagent-coordinate/references/channel-help-portal.md +0 -22
  260. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-1-1-non-text-content.md +0 -0
  261. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-i-lists.md +0 -0
  262. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-ii-tables.md +0 -0
  263. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-iii-form-labels.md +0 -0
  264. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-iv-regions.md +0 -0
  265. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-v-groups.md +0 -0
  266. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-5-identify-input.md +0 -0
  267. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-4-3-contrast.md +0 -0
  268. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-1-1-keyboard.md +0 -0
  269. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-4-4-link-purpose.md +0 -0
  270. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-4-6-headings-labels.md +0 -0
  271. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -0
  272. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -0
  273. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-3-label-in-name.md +0 -0
  274. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-7-dragging-movement.md +0 -0
  275. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-2-1-on-focus.md +0 -0
  276. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-2-2-on-input.md +0 -0
  277. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-1-error-identification.md +0 -0
  278. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-2-labels-instructions.md +0 -0
  279. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-3-error-suggestion.md +0 -0
  280. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-i-name.md +0 -0
  281. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-ii-role.md +0 -0
  282. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-iii-value.md +0 -0
  283. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-1-1-non-text-content.md +0 -0
  284. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-1-use-of-color.md +0 -0
  285. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-10-resize-reflow.md +0 -0
  286. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-11-non-text-contrast.md +0 -0
  287. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-3-contrast.md +0 -0
  288. /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/scripts/contrast-ratio.py +0 -0
@@ -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. |