@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/afv-skills",
3
- "version": "1.41.0",
3
+ "version": "1.43.0",
4
4
  "description": "Salesforce skills for Agentforce Vibes",
5
5
  "license": "CC-BY-NC-4.0",
6
6
  "files": [
@@ -14,13 +14,9 @@
14
14
  "@salesforce/ui-bundle-template-app-react-sample-b2e": "^11.57.2",
15
15
  "@salesforce/ui-bundle-template-app-react-sample-b2x": "^11.57.2",
16
16
  "@salesforce/webapp-template-app-react-sample-b2e-experimental": "^1.117.1",
17
- "@salesforce/webapp-template-app-react-sample-b2x-experimental": "^1.117.1",
18
- "@types/js-yaml": "^4.0.9",
19
- "js-yaml": "^4.1.1",
20
- "tsx": "^4.21.0"
17
+ "@salesforce/webapp-template-app-react-sample-b2x-experimental": "^1.117.1"
21
18
  },
22
19
  "scripts": {
23
- "validate:skills": "tsx scripts/validate-skills.ts",
24
20
  "sync-react-b2e-sample": "node scripts/sync-react-b2e-sample.js",
25
21
  "sync-react-b2x-sample": "node scripts/sync-react-b2x-sample.js"
26
22
  }
@@ -2,6 +2,9 @@
2
2
  name: automation-sandbox-post-copy-config-generate
3
3
  description: "Generate the JSON config file that the Salesforce sandbox post-copy automation tool consumes, from a customer SOP in any format (PDF, xlsx, csv, JSON, docx, Markdown, plain text, or a screenshot of an endpoint table). Use when the user asks to create, build, generate, produce, or convert a post-copy or post-refresh automation config — turning a sandbox-refresh SOP into a JSON array of OutboundMessages and RemoteSiteSettings entries with ConfigurationName, Label, Fields, IsActive, and ExecutionOrder. Also trigger for phrasings like \"post-copy config\", \"post-refresh automation JSON\", \"update the outbound message (OBM) endpoints after refresh\", \"convert this SOP to config\", \"remote site settings JSON\", \"refresh planner to JSON\", or \"sandbox refresh config\". DO NOT TRIGGER when: user wants to deploy the generated config to an org (use platform-metadata-deploy), or apply/execute/run/dry-run the post-copy automation JSON against a sandbox (use automation-sandbox-post-copy-configure)."
4
4
  metadata:
5
+ relatedSkills:
6
+ - "automation-sandbox-post-copy-configure"
7
+ - "platform-metadata-deploy"
5
8
  version: "1.0"
6
9
  domains: ["Automation"]
7
10
  ---
@@ -3,6 +3,10 @@ name: automation-sandbox-post-copy-configure
3
3
  description: "Apply a Salesforce sandbox post-copy automation JSON config against a target org. For each entry, the skill derives the correct Tooling API sobject from the entry's `ConfigurationName`, verifies the derivation via a describe probe, resolves the record Id via SOQL-over-REST, then PATCHes the record via the compound `Metadata` field using `sf api request rest`. Use when the user asks to apply, run, execute, dry-run, or preview a post-copy or post-refresh config file (e.g. `post-copy-config.json`) against a sandbox. Trigger phrases: \"apply post-copy config\", \"run post-copy automation\", \"execute sandbox post-refresh JSON\", \"apply sandbox refresh config\", \"configure sandbox after refresh\". DO NOT TRIGGER for generating the config JSON from an SOP (delegate to `automation-sandbox-post-copy-config-generate`), or for deploying metadata XML."
4
4
  allowed-tools: Bash Read Write
5
5
  metadata:
6
+ relatedSkills:
7
+ - "automation-sandbox-post-copy-config-generate"
8
+ - "dx-org-permission-set-assign"
9
+ - "platform-metadata-deploy"
6
10
  version: "1.0"
7
11
  domains: ["Automation"]
8
12
  cliTools:
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: design-systems-slds-validate
3
- description: "Audit Lightning Web Components for SLDS design-system compliance and produce a scored quality report. Runs the SLDS linter and analyzes CSS for theming hook usage and pairing, scoring SLDS findings across categories into an overall grade. Use when asked to \"score my component's SLDS\", \"SLDS scorecard\", \"SLDS quality report\", \"audit SLDS compliance\", \"how good is my SLDS\", \"check SLDS quality\", \"rate my SLDS styling\", \"evaluate my component's SLDS\", \"is this component's SLDS ready to ship?\", \"look at my LWC for SLDS issues\", \"audit SLDS before I submit\", \"review my component's SLDS before code review\", or any time a user wants an SLDS quality assessment or SLDS production-readiness check on an LWC. Not for fixing violations (use design-systems-slds2-migrate), building new components (use design-systems-slds-apply), or accessibility/WCAG/ARIA audits (use experience-lwc-accessibility-validate)."
3
+ description: "Audit Lightning Web Components for SLDS design-system compliance and produce a scored quality report. Runs the SLDS linter and analyzes CSS for theming hook usage and pairing, scoring SLDS findings across categories into an overall grade. Use when asked to \"score my component's SLDS\", \"SLDS scorecard\", \"SLDS quality report\", \"audit SLDS compliance\", \"how good is my SLDS\", \"check SLDS quality\", \"rate my SLDS styling\", \"evaluate my component's SLDS\", \"is this component's SLDS ready to ship?\", \"look at my LWC for SLDS issues\", \"audit SLDS before I submit\", \"review my component's SLDS before code review\", or any time a user wants an SLDS quality assessment or SLDS production-readiness check on an LWC. Not for fixing violations (use design-systems-slds2-migrate), building new components (use design-systems-slds-apply), or accessibility/WCAG/ARIA audits (use experience-accessibility-validate)."
4
4
  metadata:
5
5
  version: "1.0"
6
6
  domains: ["Design Systems"]
7
7
  relatedSkills:
8
8
  - "design-systems-slds-apply"
9
9
  - "design-systems-slds2-migrate"
10
- - "experience-lwc-accessibility-validate"
10
+ - "experience-accessibility-validate"
11
11
  cliTools:
12
12
  - tool: ["npx"]
13
13
  semver: ">=7.0.0"
@@ -1,12 +1,11 @@
1
1
  ---
2
2
  name: dx-app-analytics-query
3
- description: "ISV App Analytics metadata types — AppAnalyticsQueryRequest and AppAnalyticsSettings. Use this skill when the user asks about retrieving managed package usage data, configuring App Analytics simulation mode, querying subscriber snapshots, or understanding the AppAnalyticsQueryRequest lifecycle (New → Pending → Complete → Expired). TRIGGER when: user mentions App Analytics, AppAnalyticsQueryRequest, AppAnalyticsSettings, package usage data, subscriber analytics, ISV analytics, or simulation mode for app analytics. DO NOT TRIGGER when: the task is about standard Salesforce reports/dashboards (use reporting skills), custom SOQL on Account/Contact (use platform-soql-query), or Data Cloud query/search (use data360-query)."
3
+ description: "ISV App Analytics metadata types — AppAnalyticsQueryRequest and AppAnalyticsSettings. Use this skill when the user asks about retrieving managed package usage data, configuring App Analytics simulation mode, querying subscriber snapshots, or understanding the AppAnalyticsQueryRequest lifecycle (New → Pending → Complete → Expired). TRIGGER when: user mentions App Analytics, AppAnalyticsQueryRequest, AppAnalyticsSettings, package usage data, subscriber analytics, ISV analytics, or simulation mode for app analytics. DO NOT TRIGGER when: the task is about standard Salesforce reports/dashboards (use reporting skills), custom SOQL on Account/Contact (use platform-soql-query)."
4
4
  metadata:
5
5
  cliTools:
6
6
  - tool: ["sf"]
7
7
  semver: ">=2.0.0"
8
8
  relatedSkills:
9
- - "data360-query"
10
9
  - "platform-metadata-deploy"
11
10
  - "platform-soql-query"
12
11
  version: "1.0"
@@ -29,7 +28,6 @@ Use `dx-app-analytics-query` when the work involves:
29
28
 
30
29
  Delegate elsewhere when the user is:
31
30
  - Running standard CRM SOQL queries → platform-soql-query
32
- - Working with Data Cloud SQL or DMOs → data360-query
33
31
  - Building reports/dashboards on standard objects → reporting skills
34
32
  - Deploying or retrieving generic metadata XML → platform-metadata-deploy / retrieving-metadata
35
33
 
@@ -0,0 +1,205 @@
1
+ ---
2
+ name: dx-devops-conflict-resolve
3
+ description: "Use this skill to diagnose and resolve what blocks a DevOps Center promotion of a work item's feature branch: Git merge conflicts and deployment failures. DevOps Center is Git-backed, so overlapping metadata changes surface as merge conflicts against the target stage branch, resolved with git (detect, resolve markers, commit, push). Deploy failures often cite a missing dependency a full promotion can fix when the component already exists on the branch. TRIGGER when the user wants to check a work item for conflicts before promoting, resolve merge conflicts or leftover conflict markers in metadata files (.xml, .object-meta.xml, .cls), reconcile a feature branch with its target stage branch, or diagnose why a DevOps Center promotion or deployment failed and whether a full promotion or a missing-dependency fix will resolve it. DO NOT TRIGGER for running the promotion itself (use dx-devops-promote), creating or updating work items (use dx-devops-work-item-manage), or deploying metadata directly to an org."
4
+ metadata:
5
+ version: "1.0"
6
+ domains: ["Developer Experience"]
7
+ minApiVersion: "58.0"
8
+ relatedSkills:
9
+ - "dx-devops-promote"
10
+ - "dx-devops-work-item-manage"
11
+ cliTools:
12
+ - tool: ["git"]
13
+ semver: ">=2.23"
14
+ - tool: ["jq"]
15
+ semver: ">=1.6"
16
+ - tool: ["sf"]
17
+ semver: ">=2.0.0"
18
+ accessCheck:
19
+ - type: "orgPref"
20
+ value: "ALMDevopsCorePref"
21
+ - type: "userPerm"
22
+ value: "UserHasDevOpsCore"
23
+ ---
24
+
25
+ # DevOps Center Conflict & Deploy-Failure Resolution
26
+
27
+ Diagnoses and resolves what blocks a DevOps Center promotion of a work item's feature branch. DevOps Center is Git-backed: each work item is a feature branch and each pipeline stage has a target branch. A promotion can fail two ways — a **Git merge conflict** (two work items changed the same metadata) or a **deployment failure** (the deploy itself errors, often on a **missing dependency**). There is no `sf devops conflict` CLI command; both cases are diagnosed and resolved with standard **git** against the connected repository. This skill runs in a local clone of that repo.
28
+
29
+ ## Scope
30
+
31
+ - **In scope**: (a) Detect merge conflicts between a work item's feature branch and the target stage branch (non-destructively), resolve conflicted files (choose a side or manually merge conflict markers), commit, and push the feature branch DevOps Center tracks; (b) Diagnose a promotion **deploy failure** — classify it as a merge conflict vs. a deploy error, parse a missing dependency, and determine whether a **full promotion** can fix it (the component exists on the feature branch) or the component must be added first
32
+ - **Out of scope**: Running the promotion, full promotion, or combine (use `dx-devops-promote`), creating/updating work items or their status (use `dx-devops-work-item-manage`), deploying metadata directly to an org, pipeline or project setup (separate skills)
33
+
34
+ ---
35
+
36
+ ## Required Inputs
37
+
38
+ Gather or infer before proceeding:
39
+
40
+ - **Local clone** of the DevOps Center connected Git repository (the agent runs git commands here). Confirm the working tree is clean before starting.
41
+ - **Feature branch name** — the branch backing the work item. If the user gives a work item ID/subject instead, resolve it to its branch (see the Reference File Index for the `sf devops work-item` lookup).
42
+ - **Target stage branch name** — the branch of the pipeline stage the work item promotes into (e.g. the integration/UAT branch).
43
+ - **Remote name** — defaults to `origin`.
44
+ - **Deploy error text** (deploy-failure track only) — the promotion's error output/summary. Needed to classify the failure and parse a missing dependency. Capture it to a file or pipe it into the diagnosis script.
45
+
46
+ Defaults unless specified:
47
+ - Remote: `origin`
48
+ - Merge direction: merge the **target stage branch into the feature branch** (reconcile the work item with where it is going)
49
+
50
+ If the user names both branches ("resolve conflicts on `feature/WI-101` against `uat`"), proceed. If they give a work item, resolve its branch first.
51
+
52
+ ---
53
+
54
+ ## Workflow
55
+
56
+ DevOps Center promotion blockers are Git-level. Detection and diagnosis are deterministic (scripts); resolving each conflicted file requires judgment (prose). Never resolve without first detecting on a clean tree.
57
+
58
+ **Route first.** Pick the track from the user's situation:
59
+
60
+ - **Merge conflict track** — the user wants a pre-promotion conflict check, or a promotion failed and the cause is (or is suspected to be) a merge conflict → Phases 1–4 below.
61
+ - **Deploy-failure track** — a promotion's *deploy* failed with an error message and the user wants to know why and how to fix it → Phase D below. If Phase D classifies the failure as a merge conflict, fall through to the merge-conflict track.
62
+
63
+ ### Phase 1 — Authenticate and orient
64
+
65
+ 1. **Confirm the local repo and clean tree.** Run in the repo clone:
66
+ ```bash
67
+ git rev-parse --is-inside-work-tree && git status --porcelain
68
+ ```
69
+ - If `git status --porcelain` prints anything, the tree is dirty — instruct the user to commit or stash first. A trial merge on a dirty tree is unsafe.
70
+ 2. **Resolve a work item to its branch (only if the user gave a work item, not a branch).** Verify org auth with `sf org display --json`; if it fails, tell the user to run `sf org login web --set-default --alias <alias>`. Then look up the branch — see `references/git-conflict-resolution.md`.
71
+
72
+ ### Phase 2 — Detect (non-destructive)
73
+
74
+ 3. **Run the detection script.** It fetches, trial-merges the target branch into the feature branch without committing, lists conflicted files, and aborts the trial so the tree is left untouched:
75
+ ```bash
76
+ scripts/detect-conflicts.sh <feature-branch> <target-branch> [remote]
77
+ ```
78
+ - Exit `0` = clean merge (no conflicts) → report "safe to promote" and STOP.
79
+ - Exit `2` = conflicts found → the script prints the conflicting file list; proceed to Phase 3.
80
+ - Exit `1` = error (dirty tree, unknown branch, fetch failure) → report the error and STOP; do not treat an error as "no conflicts".
81
+
82
+ ### Phase 3 — Resolve
83
+
84
+ 4. **Start the real merge** to bring conflict markers into the working tree:
85
+ ```bash
86
+ git checkout <feature-branch>
87
+ git merge --no-ff <remote>/<target-branch>
88
+ ```
89
+ List the conflicted files deterministically:
90
+ ```bash
91
+ git diff --name-only --diff-filter=U
92
+ ```
93
+ 5. **Resolve each conflicted file** — this is the judgment step:
94
+ - When one side is unambiguously correct, take it: `git checkout --ours -- <file>` (keep the feature branch's version) or `git checkout --theirs -- <file>` (take the target branch's version). For DevOps Center, "ours" is the feature branch, "theirs" is the target stage branch.
95
+ - When both sides contain needed changes (divergent edits to the same component), open the file and manually merge — reconcile the `<<<<<<<` / `=======` / `>>>>>>>` regions into a single correct version, preserving both intents. Be especially careful with XML metadata (`.xml`, `.object-meta.xml`, `.field-meta.xml`): keep the file well-formed and do not duplicate elements.
96
+ - Stage each resolved file: `git add <file>`.
97
+ 6. **Confirm no markers remain** before committing:
98
+ ```bash
99
+ git diff --check
100
+ git diff --name-only --diff-filter=U
101
+ ```
102
+ - `git diff --check` must report nothing, and the unmerged-file list must be empty. If either shows leftovers, keep resolving — do not commit.
103
+
104
+ ### Phase 4 — Finalize and report
105
+
106
+ 7. **Commit and push the resolution** to the tracked feature branch so DevOps Center picks it up:
107
+ ```bash
108
+ git commit --no-edit # completes the merge with the default merge message
109
+ git push <remote> <feature-branch>
110
+ ```
111
+ 8. **Report the outcome**:
112
+ - No conflicts: "No merge conflicts between `<feature>` and `<target>`. Safe to promote."
113
+ - Resolved: list the files resolved and how (took a side vs. manual merge), and state that the feature branch was pushed. Then hand off: "Re-validate and promote via `dx-devops-promote`."
114
+
115
+ ### Phase D — Diagnose a deployment failure
116
+
117
+ Use this track when a promotion's **deploy** failed with an error and the user wants to know why and how to fix it. Diagnosis is deterministic (a script); do not eyeball the error.
118
+
119
+ D1. **Capture the deploy error text** to a file, or pipe it directly into the diagnosis script.
120
+
121
+ D2. **Run the diagnosis script** from the repo clone. It classifies the failure, parses any missing dependency, and checks whether that component exists on the feature branch (via `git show`):
122
+ ```bash
123
+ scripts/diagnose-deploy-failure.sh <error-file|-> <feature-branch> [target-branch] [remote]
124
+ # or: <deploy command> 2>&1 | scripts/diagnose-deploy-failure.sh - <feature-branch> <target-branch>
125
+ ```
126
+ Act on the exit code and the printed `REASON` / `RECOMMENDATION`:
127
+ - Exit `0` (`dependency_in_feature_branch`) → the missing component **exists on the feature branch** but was left out of the deployed set. A **full promotion** should fix it. Report this, confirm with the user, and hand off to `dx-devops-promote` to run a full promotion. This skill does not promote.
128
+ - Exit `2` (`merge_conflict`) → the failure is a merge conflict, not a deploy error. Fall through to the **merge-conflict track** (Phase 1 onward).
129
+ - Exit `3` (`dependency_not_in_feature_branch`) → the missing component is **not** on the feature branch, so promoting cannot supply it. Report that the component must be added and committed to the feature branch (or the owning work item included) before promoting.
130
+ - Exit `4` (`no_dependency_parsed`) → the error is not a recognizable missing dependency. Report the raw error and advise fixing the underlying issue (e.g. test coverage, invalid metadata); a full promotion will not help.
131
+ - Exit `1` → environment/usage error (not in a git repo, unreadable error file) → report and stop.
132
+
133
+ D3. **Report the diagnosis** with the `REASON`, whether a full promotion can fix it, the missing component (if any) and where it lives, and the concrete next step. Never re-promote blindly — only recommend a full promotion when the diagnosis is `dependency_in_feature_branch`.
134
+
135
+ ---
136
+
137
+ ## Rules / Constraints
138
+
139
+ | Constraint | Rationale |
140
+ |-----------|-----------|
141
+ | Never trial-merge or merge on a dirty working tree | An in-progress merge on uncommitted changes can clobber the user's work irrecoverably |
142
+ | Always detect (Phase 2) before resolving (Phase 3) | Detection is non-destructive; jumping to a live merge without knowing the conflict set risks a messy half-merge |
143
+ | Detect conflicts with the script, not by eyeballing | `scripts/detect-conflicts.sh` produces a deterministic, reproducible conflict list and always cleans up its trial merge |
144
+ | A non-zero detection error is NOT "no conflicts" | Only exit `0` (clean) means safe to promote; exit `1` means the check failed and must be reported |
145
+ | Merge the target stage branch INTO the feature branch | Reconciles the work item with its destination; DevOps Center promotes the feature branch, so the resolution must live there |
146
+ | Verify no conflict markers remain (`git diff --check`) before committing | Committing unresolved markers corrupts the metadata and the promotion |
147
+ | Preserve XML well-formedness when manually merging metadata | Malformed `-meta.xml` breaks deployment; never leave duplicated or truncated elements |
148
+ | Push only the work item's feature branch | The resolution belongs to the work item's branch; never push to a stage/integration branch directly |
149
+ | This skill does not promote or deploy | Resolution ends at a pushed, conflict-free branch or a diagnosis; promotion (including full promotion) is `dx-devops-promote` |
150
+ | Diagnose deploy failures with the script, not by eyeballing | `scripts/diagnose-deploy-failure.sh` deterministically classifies the failure and verifies branch presence with `git show` |
151
+ | Recommend a full promotion ONLY when the missing component is on the feature branch | If the component is absent, promoting the branch cannot supply it — a re-promote just fails again |
152
+
153
+ ---
154
+
155
+ ## Gotchas
156
+
157
+ | Issue | Resolution |
158
+ |-------|------------|
159
+ | **No `sf devops conflict` CLI command exists** | DevOps Center conflicts are Git conflicts — resolve them with `git`, not a `sf devops` subcommand. This skill is git-based by design |
160
+ | **Dirty working tree** | `git status --porcelain` must be empty; instruct the user to commit or stash before detecting/resolving |
161
+ | **User gave a work item, not a branch** | Resolve the work item to its feature branch first via `sf devops work-item` — see `references/git-conflict-resolution.md` |
162
+ | **Non-zero script exit treated as clean** | Exit `2` = conflicts, exit `1` = error. Only exit `0` is "safe to promote" |
163
+ | **Committing with markers still present** | Run `git diff --check` and confirm the `--diff-filter=U` list is empty before `git commit`; leftover `<<<<<<<`/`>>>>>>>` markers corrupt metadata |
164
+ | **`--ours` / `--theirs` reversed** | When merging the target INTO the feature branch, `--ours` = feature branch, `--theirs` = target stage branch |
165
+ | **Manually merged XML is malformed** | Keep `-meta.xml` well-formed; do not duplicate elements. Re-check the file parses before staging |
166
+ | **Detached HEAD / stale branch** | `git fetch` first; check out the feature branch as a tracking branch before merging (the script fetches for you) |
167
+ | **Conflict reappears after promotion still fails** | The target branch moved; re-run detection against the current target branch and resolve again |
168
+ | **Re-promoting a deploy failure without diagnosing** | Run `scripts/diagnose-deploy-failure.sh` first: exit `0` = component on the branch, a full promotion fixes it; exit `2` = it's a merge conflict (switch tracks); exit `3` = component absent, add and commit it (or include the owning work item) before promoting — promotion alone cannot supply it |
169
+
170
+ ---
171
+
172
+ ## Output Expectations
173
+
174
+ This skill produces a **conflict-free feature branch** or a **deploy-failure diagnosis**, not org changes:
175
+
176
+ - **No conflicts**: confirmation that the feature branch merges cleanly into the target stage branch — safe to promote
177
+ - **Conflicts resolved**: a merge commit on the work item's feature branch reconciling it with the target stage branch, pushed to the remote, plus a report of which files were resolved and how (took a side vs. manual merge)
178
+ - **Deploy-failure diagnosis**: a report stating the failure reason (merge conflict / missing dependency in-branch / missing dependency not-in-branch / unrecognized), whether a full promotion can fix it, the missing component and where it lives, and the concrete next step
179
+
180
+ No metadata is deployed and no org state is mutated. The deliverable is the pushed, conflict-free branch or the diagnosis and recommended next step.
181
+
182
+ ---
183
+
184
+ ## Cross-Skill Integration
185
+
186
+ | When | Action |
187
+ |------|--------|
188
+ | The branch is conflict-free (or resolved and pushed) and ready to advance | Delegate to `dx-devops-promote` to validate and promote |
189
+ | A work item name/ID must be resolved to its feature branch, or candidate work items listed | Use `dx-devops-work-item-manage` |
190
+ | Work items share metadata and could promote as one unit instead of resolving separately | Consider combining via `dx-devops-promote`'s combine step rather than a manual merge |
191
+ | A promote deploy already failed on a conflict | Re-detect against the current target branch, resolve, push, then re-promote via `dx-devops-promote` |
192
+ | Diagnosis says a full promotion can fix the failure (`dependency_in_feature_branch`) | Hand off to `dx-devops-promote` to run the full promotion — this skill does not promote |
193
+ | Missing component must be added to the feature branch before promoting | Author/commit the component (or include the owning work item) — for metadata generation use the relevant domain skill, then re-promote via `dx-devops-promote` |
194
+
195
+ ---
196
+
197
+ ## Reference File Index
198
+
199
+ | File | When to read |
200
+ |------|-------------|
201
+ | `scripts/detect-conflicts.sh` | Phase 2 — run it to non-destructively detect merge conflicts between the feature branch and the target stage branch |
202
+ | `scripts/diagnose-deploy-failure.sh` | Phase D — run it to classify a promotion deploy failure and decide whether a full promotion (or a missing-dependency fix) resolves it |
203
+ | `references/git-conflict-resolution.md` | When you need the full git command reference, the `sf devops work-item`-to-branch lookup, or `--ours`/`--theirs` and XML-merge guidance |
204
+ | `references/deploy-failure-resolution.md` | Phase D — when you need the deploy-failure decision tree, the error-parsing patterns, or the full-promotion reasoning behind the diagnosis script |
205
+ | `examples/conflict-workflows.md` | When the user's request matches a common pattern (pre-promotion conflict check, take-a-side resolution, manual XML merge, troubleshooting a failed promotion, or diagnosing a deploy failure) |
@@ -0,0 +1,165 @@
1
+ # DevOps Center Conflict Resolution Examples
2
+
3
+ Common end-to-end patterns. Every pattern runs in a local clone of the DevOps Center connected Git repo, starts from a **clean working tree**, and **detects before resolving**. Detection is non-destructive; resolution ends with a commit pushed to the work item's feature branch. Promotion itself is `dx-devops-promote`, not this skill.
4
+
5
+ ---
6
+
7
+ ## Example 1 — Pre-promotion conflict check (no conflicts)
8
+
9
+ **User prompt:** "Before I promote `feature/WI-101` to UAT, is there anything that will conflict?"
10
+
11
+ ```bash
12
+ # 1. Confirm a clean tree
13
+ git status --porcelain # must be empty
14
+
15
+ # 2. Detect (non-destructive) — target stage branch is uat
16
+ scripts/detect-conflicts.sh feature/WI-101 uat origin
17
+ # → CLEAN: no merge conflicts between feature/WI-101 and origin/uat (exit 0)
18
+ ```
19
+
20
+ **Report:** "No merge conflicts between `feature/WI-101` and `uat`. Safe to promote — hand off to `dx-devops-promote`."
21
+
22
+ ---
23
+
24
+ ## Example 2 — Resolve by taking one side
25
+
26
+ **User prompt:** "`feature/WI-101` conflicts with `uat` on the README — keep my branch's version."
27
+
28
+ ```bash
29
+ # 1. Detect
30
+ scripts/detect-conflicts.sh feature/WI-101 uat origin
31
+ # → CONFLICTS: merging origin/uat into feature/WI-101 conflicts on these files:
32
+ # docs/README.md (exit 2)
33
+
34
+ # 2. Real merge to bring in the markers
35
+ git checkout feature/WI-101
36
+ git merge --no-ff origin/uat
37
+
38
+ # 3. Keep the feature branch's version (ours = feature branch when merging target → feature)
39
+ git checkout --ours -- docs/README.md
40
+ git add docs/README.md
41
+
42
+ # 4. Verify nothing left, then finalize
43
+ git diff --check
44
+ git diff --name-only --diff-filter=U # empty
45
+ git commit --no-edit
46
+ git push origin feature/WI-101
47
+ ```
48
+
49
+ **Report:** "Resolved `docs/README.md` by keeping the feature branch's version; merged `uat` into `feature/WI-101` and pushed. Re-validate and promote via `dx-devops-promote`."
50
+
51
+ ---
52
+
53
+ ## Example 3 — Manual merge of conflicting XML metadata
54
+
55
+ **User prompt:** "Two work items both edited the `Account` object — resolve the conflict on `feature/WI-205` against `integration`, keeping both sets of fields."
56
+
57
+ ```bash
58
+ # 1. Detect
59
+ scripts/detect-conflicts.sh feature/WI-205 integration origin
60
+ # → CONFLICTS: ... force-app/main/default/objects/Account/Account.object-meta.xml (exit 2)
61
+
62
+ # 2. Real merge
63
+ git checkout feature/WI-205
64
+ git merge --no-ff origin/integration
65
+
66
+ # 3. Hand-merge the XML: open the file, reconcile the
67
+ # <<<<<<< / ======= / >>>>>>> regions so BOTH work items' <fields> blocks
68
+ # are present exactly once, keep the document well-formed, no duplicated elements.
69
+ # (Edit Account.object-meta.xml here.)
70
+
71
+ # 4. Sanity-check it still parses, then stage
72
+ xmllint --noout force-app/main/default/objects/Account/Account.object-meta.xml # if available
73
+ git add force-app/main/default/objects/Account/Account.object-meta.xml
74
+
75
+ # 5. Verify + finalize
76
+ git diff --check
77
+ git diff --name-only --diff-filter=U # empty
78
+ git commit --no-edit
79
+ git push origin feature/WI-205
80
+ ```
81
+
82
+ **Report:** "Manually merged `Account.object-meta.xml`, preserving both work items' field additions; XML validated, merged `integration` into `feature/WI-205`, and pushed. Consider combining these work items via `dx-devops-promote` if they should promote as one unit."
83
+
84
+ ---
85
+
86
+ ## Example 4 — Prefer combine over manual merge
87
+
88
+ **User prompt:** "WI-301 and WI-302 keep conflicting on the same Apex class every promotion."
89
+
90
+ When two work items legitimately share components, resolving the same metadata by hand on every promotion is wasted effort. Detect to confirm the overlap, then recommend combining rather than merging:
91
+
92
+ ```bash
93
+ scripts/detect-conflicts.sh feature/WI-301 uat origin
94
+ # → CONFLICTS: ... force-app/main/default/classes/AccountService.cls (exit 2)
95
+ ```
96
+
97
+ **Report:** "WI-301 and WI-302 both modify `AccountService.cls`. Rather than hand-merging on each promotion, combine them into one promotion unit via `dx-devops-promote`'s combine step so they deploy together. If you must keep them separate, resolve now: merge `uat` into `feature/WI-301`, reconcile the class, commit, and push."
98
+
99
+ ---
100
+
101
+ ## Example 5 — Troubleshoot a promotion that failed on a conflict
102
+
103
+ **User prompt:** "My promote just failed with a deploy conflict — fix it."
104
+
105
+ ```bash
106
+ # 1. The target branch may have moved since the last check. Re-detect against
107
+ # the CURRENT target stage branch on a clean tree.
108
+ git status --porcelain # must be empty
109
+ scripts/detect-conflicts.sh feature/WI-410 main origin
110
+
111
+ # 2a. If exit 0 (CLEAN): the conflict was transient/stale — re-run dx-devops-promote.
112
+ # 2b. If exit 2 (CONFLICTS): resolve as in Examples 2/3, then push:
113
+ git checkout feature/WI-410
114
+ git merge --no-ff origin/main
115
+ # ...resolve each file, git add...
116
+ git diff --check
117
+ git commit --no-edit
118
+ git push origin feature/WI-410
119
+ ```
120
+
121
+ **Report:** "Re-detected against the current `main`; resolved `<files>` and pushed `feature/WI-410`. Re-run the promotion via `dx-devops-promote`."
122
+
123
+ ---
124
+
125
+ ## Example 6 — Diagnose a deployment failure (full promotion can fix)
126
+
127
+ **User prompt:** "My promotion of WI-101 to UAT failed with `Variable does not exist: BillingService`. What do I do?"
128
+
129
+ ```bash
130
+ # 1. Diagnose deterministically from the repo clone. The class BillingService is
131
+ # referenced but was left out of a partial deployed set.
132
+ echo "Problem: Variable does not exist: BillingService" \
133
+ | scripts/diagnose-deploy-failure.sh - feature/WI-101 uat origin
134
+ # → MISSING_DEPENDENCY_TYPE=ApexClass
135
+ # MISSING_DEPENDENCY_NAME=BillingService
136
+ # IN_FEATURE_BRANCH=true
137
+ # REASON=dependency_in_feature_branch
138
+ # CAN_FULL_PROMOTION_FIX=true (exit 0)
139
+ ```
140
+
141
+ **Report:** "`BillingService` (ApexClass) exists on `feature/WI-101` but wasn't in the deployed set, so the deploy failed on a missing dependency. A **full promotion** will include it and should fix the failure. Confirm, then run the full promotion via `dx-devops-promote`."
142
+
143
+ ---
144
+
145
+ ## Example 7 — Diagnose a deployment failure (component missing from the branch)
146
+
147
+ **User prompt:** "Promotion failed: `no ApexClass named TaxHelper found`. Just re-run it as a full promotion?"
148
+
149
+ ```bash
150
+ sf project deploy start ... 2>&1 \
151
+ | scripts/diagnose-deploy-failure.sh - feature/WI-210 integration origin
152
+ # → MISSING_DEPENDENCY_TYPE=ApexClass
153
+ # MISSING_DEPENDENCY_NAME=TaxHelper
154
+ # IN_FEATURE_BRANCH=false
155
+ # REASON=dependency_not_in_feature_branch
156
+ # CAN_FULL_PROMOTION_FIX=false (exit 3)
157
+ ```
158
+
159
+ **Report:** "No — `TaxHelper` is **not** on `feature/WI-210`, so promoting the branch (full or partial) cannot supply it. Add and commit `TaxHelper` to the feature branch (or include the work item that owns it), then re-promote via `dx-devops-promote`." (If exit `4`/`no_dependency_parsed`, report the raw error and advise fixing the underlying issue — e.g. test coverage — since a full promotion won't help. If exit `2`/`merge_conflict`, switch to the conflict-resolution track above.)
160
+
161
+ ---
162
+
163
+ ## Idempotency note
164
+
165
+ Detection is always safe to re-run — it aborts its trial merge and restores the checkout. If a live merge is interrupted (`MERGE_HEAD exists`), either finish it (`git commit`) or abort it (`git merge --abort`) before re-detecting; never start a second merge on top of an unfinished one.
@@ -0,0 +1,75 @@
1
+ # DevOps Center Deploy-Failure Resolution Reference
2
+
3
+ DevOps Center promotes a work item by **deploying its feature branch** into the target stage branch. That deploy can fail, and the fix depends on *why*. This reference covers the decision tree the `scripts/diagnose-deploy-failure.sh` script implements, the error patterns it recognizes, and the reasoning behind recommending a **full promotion**.
4
+
5
+ ## The two failure classes
6
+
7
+ | Class | Symptom | Can a re-promote / full promotion fix it? |
8
+ |-------|---------|-------------------------------------------|
9
+ | **Merge conflict** | Error mentions `MERGE_CONFLICT` or `CONFLICTS:` | **No.** The branches conflict — resolve the conflict first (see `git-conflict-resolution.md`), then re-promote. |
10
+ | **Deploy error** | The deploy runs but errors (missing dependency, invalid metadata, test failure, …) | **Sometimes.** A *full* promotion helps only when the deploy failed on a **missing dependency that already exists on the feature branch** but was left out of a partial deployed set. |
11
+
12
+ ## Why a "full promotion" is the lever
13
+
14
+ DevOps Center can promote a **subset** of a work item's changes. When the deployed subset references a component it did not include (e.g. an Apex class that calls another class not in the set), the deploy fails with a *missing dependency* error. If that referenced component is **already committed on the feature branch**, promoting **everything** (a full promotion) includes it and the deploy succeeds. If the component is **not** on the branch, no promotion can supply it — it must be authored/committed first (or the work item that owns it must be included).
15
+
16
+ ## The decision tree
17
+
18
+ ```text
19
+ deploy error
20
+ ├─ matches MERGE_CONFLICT / CONFLICTS: → merge conflict; resolve, don't re-promote (exit 2)
21
+ └─ otherwise, parse a missing dependency
22
+ ├─ none parsed → generic fix; full promotion won't help (exit 4)
23
+ └─ dependency <Type> <Name> parsed
24
+ ├─ present on feature branch → FULL PROMOTION can fix; confirm & promote (exit 0)
25
+ └─ absent from feature branch → add/commit the component first, then promote (exit 3)
26
+ ```
27
+
28
+ ## Recognized error patterns
29
+
30
+ The parser (mirrors the DevOps Center provider) extracts a metadata **type** and **component name** from these shapes:
31
+
32
+ | Error shape | Parsed as |
33
+ |-------------|-----------|
34
+ | `Variable does not exist: Foo` (or `Problem: Variable does not exist: Foo`) | `ApexClass` `Foo` |
35
+ | `no ApexClass named Foo found` (also `ApexTrigger`/`ApexPage`/`CustomObject`/`Flow`) | that type + `Foo` |
36
+ | `In field: apexClass - no ApexClass named Foo found (profiles/…)` | `ApexClass` `Foo` |
37
+ | `... Component: Foo, Type: ApexClass ...` (when not a "Variable does not exist"/"Problem:" line) | that type + `Foo` |
38
+
39
+ Anything else parses to *no dependency* → generic guidance.
40
+
41
+ ## Branch-presence check
42
+
43
+ For a parsed `<Type> <Name>`, the script builds candidate source paths for the standard SFDX layout and asks git whether any exist on the branch:
44
+
45
+ ```bash
46
+ git show <feature-branch>:force-app/main/default/classes/<Name>.cls # local ref
47
+ git show origin/<feature-branch>:force-app/main/default/classes/<Name>.cls # remote ref fallback
48
+ ```
49
+
50
+ Path templates by type:
51
+
52
+ | Type | Candidate paths (first match wins) |
53
+ |------|------------------------------------|
54
+ | `ApexClass` | `…/classes/<Name>.cls` (under `force-app/main/default/`, `main/default/`, or `classes/`) |
55
+ | `ApexTrigger` | `…/triggers/<Name>.trigger` |
56
+ | `ApexPage` | `…/pages/<Name>.page` |
57
+ | `Profile` | `…/profiles/<Name>.profile-meta.xml` |
58
+ | `CustomObject` | `…/objects/<Name>/<Name>.object-meta.xml` |
59
+ | `Flow` | `…/flows/<Name>.flow-meta.xml` |
60
+
61
+ If a project uses a non-standard package directory (custom `packageDirectories` in `sfdx-project.json`), the standard templates may miss the file and the script reports `dependency_not_in_feature_branch` conservatively — verify manually with `git show <branch>:<actual-path>` before concluding.
62
+
63
+ ## Running the script
64
+
65
+ ```bash
66
+ # From the repo clone. Pass an error file, or pipe the deploy output with '-'.
67
+ scripts/diagnose-deploy-failure.sh deploy-error.txt feature/WI-101 uat origin
68
+ sf project deploy start ... 2>&1 | scripts/diagnose-deploy-failure.sh - feature/WI-101 uat
69
+ ```
70
+
71
+ It prints `REASON`, `CAN_FULL_PROMOTION_FIX`, `RECOMMENDATION`, and (when parsed) `MISSING_DEPENDENCY_TYPE` / `MISSING_DEPENDENCY_NAME` / `IN_FEATURE_BRANCH` (+ `IN_TARGET_BRANCH` when a target branch is given). Exit codes: `0` full promotion can fix, `2` merge conflict, `3` dependency absent, `4` unparsed, `1` usage/env error.
72
+
73
+ ## Handing off
74
+
75
+ This skill diagnoses; it does not promote. When the diagnosis is `dependency_in_feature_branch`, confirm with the user and hand the **full promotion** to `dx-devops-promote`. When a component must be added, author it with the relevant domain skill, commit it to the feature branch, then re-promote. When the diagnosis is a merge conflict, switch to the conflict-resolution track in `git-conflict-resolution.md`.