@salesforce/afv-skills 1.65.0 → 1.66.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 (379) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-offline-experimentation-run/SKILL.md +16 -15
  3. package/skills/agentforce-offline-experimentation-run/scripts/sfap_replay.py +3 -245
  4. package/skills/dx-devops-work-item-manage/SKILL.md +34 -17
  5. package/skills/dx-devops-work-item-manage/examples/common-workflows.md +49 -0
  6. package/skills/dx-devops-work-item-manage/references/commit-api.md +116 -0
  7. package/skills/experience-lwc-widget-assess/SKILL.md +79 -0
  8. package/skills/experience-lwc-widget-migrate/SKILL.md +50 -0
  9. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
  10. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
  11. package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
  12. package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
  13. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
  14. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
  15. package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
  16. package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
  17. package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
  18. package/skills/platform-role-hierarchy-apply/SKILL.md +177 -0
  19. package/skills/platform-widget-generate/SKILL.md +58 -41
  20. package/skills/platform-widget-generate/references/widget-bundle-validation.md +14 -0
  21. package/skills/service-agentforce-contact-center-coordinate/SKILL.md +1 -1
  22. package/skills/service-agentforce-contact-center-coordinate/references/number_management_api.md +11 -1
  23. package/skills/service-agentforce-contact-center-coordinate/scripts/fetch-numbers.sh +12 -6
  24. package/skills/service-agentforce-contact-center-coordinate/scripts/lib.sh +16 -0
  25. package/skills/service-agentforce-contact-center-coordinate/scripts/procure-number.sh +2 -1
  26. package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +24 -11
  27. package/skills/service-digital-engagement-channel-configure/SKILL.md +25 -14
  28. package/skills/service-digital-engagement-channel-configure/references/onboarding_contract.md +143 -0
  29. package/skills/service-digital-engagement-deployment-configure/SKILL.md +61 -12
  30. package/skills/service-digital-engagement-deployment-configure/references/connect_api_creation.md +14 -5
  31. package/skills/service-digital-engagement-deployment-configure/references/onboarding_contract.md +146 -0
  32. package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +23 -13
  33. package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +7 -6
  34. package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +9 -10
  35. package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +6 -6
  36. package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +1 -1
  37. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +34 -25
  38. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +1 -1
  39. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +90 -86
  40. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/workflow.md +63 -38
  41. package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
  42. package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
  43. package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
  44. package/skills/automation-company-profile-info-query/SKILL.md +0 -51
  45. package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
  46. package/skills/automation-flow-coordinate/SKILL.md +0 -95
  47. package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
  48. package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
  49. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
  50. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
  51. package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
  52. package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
  53. package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
  54. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
  55. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
  56. package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
  57. package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
  58. package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
  59. package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
  60. package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
  61. package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
  62. package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
  63. package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
  64. package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
  65. package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
  66. package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
  67. package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
  68. package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
  69. package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
  70. package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
  71. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
  72. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
  73. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
  74. package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
  75. package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
  76. package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
  77. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
  78. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
  79. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
  80. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
  81. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
  82. package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
  83. package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
  84. package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
  85. package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
  86. package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
  87. package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
  88. package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
  89. package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
  90. package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  91. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
  92. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
  93. package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
  94. package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
  95. package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  96. package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
  97. package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
  98. package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
  99. package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
  100. package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
  101. package/skills/commerce-credit-memo-create/SKILL.md +0 -139
  102. package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
  103. package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
  104. package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
  105. package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
  106. package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
  107. package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
  108. package/skills/commerce-fees-apply/SKILL.md +0 -227
  109. package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
  110. package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
  111. package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
  112. package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
  113. package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
  114. package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
  115. package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
  116. package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
  117. package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
  118. package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
  119. package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
  120. package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
  121. package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
  122. package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
  123. package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
  124. package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
  125. package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
  126. package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
  127. package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
  128. package/skills/commerce-product-details-get/SKILL.md +0 -363
  129. package/skills/commerce-product-search/SKILL.md +0 -563
  130. package/skills/commerce-react-storefront-create/SKILL.md +0 -350
  131. package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
  132. package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
  133. package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
  134. package/skills/communications-initial-setup-configure/SKILL.md +0 -630
  135. package/skills/communications-multisite-configure/SKILL.md +0 -571
  136. package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
  137. package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
  138. package/skills/communications-tmf-integrate/SKILL.md +0 -1368
  139. package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
  140. package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
  141. package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
  142. package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
  143. package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
  144. package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
  145. package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
  146. package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
  147. package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
  148. package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
  149. package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
  150. package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
  151. package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
  152. package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
  153. package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
  154. package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
  155. package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
  156. package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
  157. package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
  158. package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
  159. package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
  160. package/skills/data360-activation-create/SKILL.md +0 -104
  161. package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
  162. package/skills/data360-activation-target-create/SKILL.md +0 -93
  163. package/skills/data360-activation-v2-create/SKILL.md +0 -456
  164. package/skills/data360-audience-dmo-get/SKILL.md +0 -38
  165. package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
  166. package/skills/data360-calculated-insight-create/SKILL.md +0 -148
  167. package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
  168. package/skills/data360-code-extension-create/SKILL.md +0 -115
  169. package/skills/data360-communication-capping-create/SKILL.md +0 -227
  170. package/skills/data360-connection-create/SKILL.md +0 -491
  171. package/skills/data360-content-lens-create/SKILL.md +0 -181
  172. package/skills/data360-data-action-create/SKILL.md +0 -126
  173. package/skills/data360-data-action-target-create/SKILL.md +0 -181
  174. package/skills/data360-data-clean-room-create/SKILL.md +0 -238
  175. package/skills/data360-data-governance-create/SKILL.md +0 -746
  176. package/skills/data360-data-graph-create/SKILL.md +0 -82
  177. package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
  178. package/skills/data360-data-lake-object-create/SKILL.md +0 -207
  179. package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
  180. package/skills/data360-data-model-object-create/SKILL.md +0 -128
  181. package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
  182. package/skills/data360-data-space-create/SKILL.md +0 -161
  183. package/skills/data360-data-streams-create/SKILL.md +0 -324
  184. package/skills/data360-engagement-signal-get/SKILL.md +0 -38
  185. package/skills/data360-experiment-create/SKILL.md +0 -82
  186. package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
  187. package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
  188. package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
  189. package/skills/data360-identity-resolution-create/SKILL.md +0 -115
  190. package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
  191. package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
  192. package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
  193. package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
  194. package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
  195. package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
  196. package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
  197. package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
  198. package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
  199. package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
  200. package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
  201. package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
  202. package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
  203. package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
  204. package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
  205. package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
  206. package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
  207. package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
  208. package/skills/experience-afv-query/SKILL.md +0 -234
  209. package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
  210. package/skills/experience-apex-components-configure/SKILL.md +0 -69
  211. package/skills/experience-apex-pages-configure/SKILL.md +0 -107
  212. package/skills/experience-app-home-configure/SKILL.md +0 -76
  213. package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
  214. package/skills/experience-briefcase-configure/SKILL.md +0 -287
  215. package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
  216. package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
  217. package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
  218. package/skills/experience-content-assets-configure/SKILL.md +0 -86
  219. package/skills/experience-custom-domain-create/SKILL.md +0 -727
  220. package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
  221. package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
  222. package/skills/experience-flow-category-configure/SKILL.md +0 -117
  223. package/skills/experience-formula-configure/SKILL.md +0 -358
  224. package/skills/experience-global-actions-configure/SKILL.md +0 -69
  225. package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
  226. package/skills/experience-instrumentation-configure/SKILL.md +0 -64
  227. package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
  228. package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
  229. package/skills/experience-lightning-out-configure/SKILL.md +0 -129
  230. package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
  231. package/skills/experience-lightning-types-query/SKILL.md +0 -98
  232. package/skills/experience-malware-scan-configure/SKILL.md +0 -71
  233. package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
  234. package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
  235. package/skills/experience-notification-types-configure/SKILL.md +0 -206
  236. package/skills/experience-notifications-configure/SKILL.md +0 -75
  237. package/skills/experience-record-discovery-query/SKILL.md +0 -227
  238. package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
  239. package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
  240. package/skills/experience-schema-builder-open/SKILL.md +0 -38
  241. package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
  242. package/skills/experience-static-resources-configure/SKILL.md +0 -74
  243. package/skills/field-service-setup-coordinate/SKILL.md +0 -62
  244. package/skills/field-service-work-plan-configure/SKILL.md +0 -253
  245. package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
  246. package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
  247. package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
  248. package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
  249. package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
  250. package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
  251. package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
  252. package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
  253. package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
  254. package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
  255. package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
  256. package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
  257. package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
  258. package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
  259. package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
  260. package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
  261. package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
  262. package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
  263. package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
  264. package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
  265. package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
  266. package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
  267. package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
  268. package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
  269. package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
  270. package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
  271. package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
  272. package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
  273. package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
  274. package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
  275. package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
  276. package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
  277. package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
  278. package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
  279. package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
  280. package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
  281. package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
  282. package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
  283. package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
  284. package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
  285. package/skills/health-cloud-initial-configure/SKILL.md +0 -511
  286. package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
  287. package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
  288. package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
  289. package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
  290. package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
  291. package/skills/industries-account-score-settings-query/SKILL.md +0 -78
  292. package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
  293. package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
  294. package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
  295. package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
  296. package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
  297. package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
  298. package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
  299. package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
  300. package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
  301. package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
  302. package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
  303. package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
  304. package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
  305. package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
  306. package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
  307. package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
  308. package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
  309. package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
  310. package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
  311. package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
  312. package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
  313. package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
  314. package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
  315. package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
  316. package/skills/industries-compliance-configure/SKILL.md +0 -102
  317. package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
  318. package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
  319. package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
  320. package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
  321. package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
  322. package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
  323. package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
  324. package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
  325. package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
  326. package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
  327. package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
  328. package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
  329. package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
  330. package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
  331. package/skills/industries-decision-tables-configure/SKILL.md +0 -439
  332. package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
  333. package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
  334. package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
  335. package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
  336. package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
  337. package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
  338. package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
  339. package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
  340. package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
  341. package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
  342. package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
  343. package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
  344. package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
  345. package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
  346. package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
  347. package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
  348. package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
  349. package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
  350. package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
  351. package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
  352. package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
  353. package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
  354. package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
  355. package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
  356. package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
  357. package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
  358. package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
  359. package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
  360. package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
  361. package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
  362. package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
  363. package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
  364. package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
  365. package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
  366. package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
  367. package/skills/industries-home-health-skills-create/SKILL.md +0 -31
  368. package/skills/industries-home-health-users-create/SKILL.md +0 -29
  369. package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
  370. package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
  371. package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
  372. package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
  373. package/skills/industries-object-enablement-configure/SKILL.md +0 -86
  374. package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
  375. package/skills/integration-apex-settings-configure/SKILL.md +0 -61
  376. package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
  377. package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
  378. package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
  379. package/skills/platform-privacy-agent-settings-configure/SKILL.md +0 -752
@@ -0,0 +1,143 @@
1
+ # Onboarding contract — delegated mode, transport, pre-scan, registration
2
+
3
+ Read this when the invocation carries a `context` object, before any org write, or when registering the skill in an
4
+ onboarding module. It implements the Feature Setup Skill Guidelines (Conversational Onboarding, Service Cloud) for
5
+ this skill. The sibling `service-digital-engagement-deployment-configure` has the same structure.
6
+
7
+ ## 1. Two entry points, one write procedure
8
+
9
+ | | Delegated | Standalone |
10
+ |---|---|---|
11
+ | Detected by | `context.calledFrom == "service-onboarding"` | no `context` object |
12
+ | Values come from | `values` in the payload — already approved in the plan table | you ask, using the defaults in SKILL.md |
13
+ | Questions | none. A missing required key is a caller bug: stop and return `failed` naming the key. Never default a value the admin did not approve | the Clarifying Questions in SKILL.md |
14
+ | Wording | `discoveryMode == "guided"` → plain business language (§4). `"pickAreas"` → Salesforce terminology | Salesforce terminology (the Clarifying Questions as written) |
15
+ | Ends with | the structured result in section 5 | a plain-language summary of the same outcome |
16
+
17
+ Delegated payload:
18
+
19
+ ```json
20
+ {
21
+ "values": {
22
+ "channelLabel": "Acme Support Chat",
23
+ "routingType": "Queue",
24
+ "routingTarget": "Support_Queue",
25
+ "fallbackQueue": null,
26
+ "userVerification": true
27
+ },
28
+ "context": { "calledFrom": "service-onboarding", "discoveryMode": "guided" }
29
+ }
30
+ ```
31
+
32
+ Required `values`: `channelLabel`, `routingType`, `routingTarget`; `fallbackQueue` is required when `routingType` is
33
+ `Flow`, `User` or `AgentforceServiceAgent`. `userVerification` defaults to `true`, matching SKILL.md. Every other
34
+ channel setting uses the SKILL.md defaults unless a key is supplied.
35
+
36
+ Missing routing target, delegated: return `failed`, `errorMessage` = "<Flow|User|Bot|Queue> <name> not found". Never
37
+ create one — queues come from the `queues` feature this one depends on.
38
+
39
+ ## 2. Transport — `/headless/metadata` first, `sf` CLI as fallback
40
+
41
+ **Transport A (primary): the headless-360 MCP `dispatch` / `dispatch_readonly` tools** against the synchronous
42
+ Metadata-CRUD route, fully-qualified: `/services/data/vXX.0/headless/metadata/<Type>?type=<Type>&fullName=<Name>`.
43
+
44
+ - `GET` = read (`dispatch_readonly`) → `{type, fullName, xmlRep}`. `POST` = create-only; re-POSTing an existing
45
+ `fullName` returns `DUPLICATE_VALUE`. `PUT` = update. On writes the body must carry `type`, `fullName` **and** `xmlRep`.
46
+ - Response is synchronous: `{results:[{success, errors[], ...}]}`. HTTP 200 can still be a failure — inner `success` wins.
47
+ - **Create once, then update.** Never re-run `POST` for a later change.
48
+ - **A minimal PUT silently drops inline blocks.** On `MessagingChannel`, a PUT that omitted `embeddedConfig` cleared
49
+ it while `automatedResponses` and `messagingKeywords` survived. Always GET → modify → PUT the **full** document.
50
+ Re-GET after the PUT and diff.
51
+ - Activation is not metadata: `IsActive` is absent from the `MessagingChannel` representation. Activate with an
52
+ sObject update (`{"IsActive": true}`) through `dispatch`, or `sf data update record` on Transport B.
53
+ - Use the same `dispatch` tool for the probe and the write. `sf api request rest` / `curl` carry the `sf` CLI's separate
54
+ credential, which can be expired while the MCP token is valid — a REST URL called through the CLI is **not** Transport A.
55
+ - Metadata references Flow/Queue by **API name** (`sessionHandlerFlow`, `sessionHandlerQueue`), not by runtime Id.
56
+
57
+ **Probe per type, per operation — never infer from another type.** Run a read-only `GET` for each type you are about
58
+ to touch (`MessagingChannel`; and `Queue` if you must create one).
59
+
60
+ | Probe result | Meaning | Action |
61
+ |---|---|---|
62
+ | `xmlRep` returned, or "Metadata not found" style error | type is onboarded | Transport A |
63
+ | `UNSUPPORTED_OPERATION` for the type or verb | not onboarded for that verb | Transport B for that call only |
64
+ | auth / connection error | MCP unavailable | Transport B; say so |
65
+
66
+ **Transport B (fallback): `sf` CLI** — `sf project deploy start` and `sf data query` / `sf data update record` as in
67
+ SKILL.md. Use only when the probe says Transport A is unavailable for that type/verb.
68
+
69
+ Routing-target existence checks (Queue, Flow, User, Bot) are SOQL: `dispatch_readonly` on the REST query endpoint first; `sf data query` only if that call returns a path/route error.
70
+
71
+ ## 3. Pre-scan (idempotency)
72
+
73
+ Run before any write, both modes. `GET` `MessagingChannel` by `fullName` = the normalized channel name.
74
+
75
+ | Finding | Outcome |
76
+ |---|---|
77
+ | No such channel | not set up → create (`POST`) |
78
+ | Exists, and every targeted setting equals the target (routing type and target, fallback queue, `authMode`, plus each supplied key) **and** `IsActive = true` | **already configured** — no write, return `already-configured` |
79
+ | Exists, matches, but `IsActive = false` | only activate; do not rewrite the metadata |
80
+ | Exists, some targeted setting differs | **drift** — announce each change ("routing: Queue A → Queue B"), then write the full document. Standalone: ask for a yes first. Delegated: the plan approval covers it |
81
+ | Exists but was created by Connect `channel/setup` (defaults populated: opt-out/help keywords, `embeddedConfig`) | you now own the whole document: GET, modify only targeted fields, PUT the full result |
82
+
83
+ Standalone, channel exists: offer exactly three choices — no change / override / add to existing.
84
+
85
+ ## 4. Questions in the admin's language (guided mode)
86
+
87
+ Ask about the outcome; state the default with each; keep it to a handful.
88
+
89
+ | Instead of | Ask |
90
+ |---|---|
91
+ | "Routing type: Queue, Flow, User or Agentforce Service Agent?" | "When a customer starts a chat, who should get it first: a team (queue), a specific person, or your AI agent? (Default: a team.)" |
92
+ | "Fallback queue developer name?" | "If that person or agent isn't available, which team should the chat go to?" |
93
+ | "Enable User Verification (JWT)?" | "Will customers be signed in to your site when they chat, so you know who they are? (Default: yes.)" Yes → Auth mode; setting up the signing keys is a separate step |
94
+ | "Pre-chat form / custom parameters" | "What should we ask customers before the chat starts? (Default: name and email.)" |
95
+ | "`isAbandonedChatsEnabled`, `chatAbandonmentTimeout`…" | Not asked; use the SKILL.md defaults |
96
+
97
+ ## 5. Result returned to the coordinator
98
+
99
+ ```json
100
+ {
101
+ "status": "success | already-configured | failed",
102
+ "errorMessage": "<empty unless failed>",
103
+ "outputs": {
104
+ "channelName": "Acme_Support_Chat",
105
+ "messagingChannelId": "<id or null>",
106
+ "isActive": true
107
+ }
108
+ }
109
+ ```
110
+
111
+ `status` and `errorMessage` are the contract. `outputs` is always returned; it is an addition to the documented shape.
112
+ On `failed`: `errorMessage` names the failed step and the platform error; stop; do not retry.
113
+
114
+ ## 6. Registration entry (draft for the onboarding team to place in a module)
115
+
116
+ ```yaml
117
+ - id: messagingChannel
118
+ title: "Customer messaging channel"
119
+ description: "Create and switch on the channel that receives customer chats from your website or app, and decide who answers first (a team, a person, or an AI agent)."
120
+ delegateSkill: service-digital-engagement-channel-configure
121
+ dependsOn: [queues]
122
+ revisionOwner: service-digital-engagement-channel-configure
123
+ # org perms: confirm exact names with Digital Engagement licensing (not yet confirmed)
124
+ values:
125
+ channelLabel: { from: signal.messagingChannelName, default: "<company> Support Chat" }
126
+ routingType: { from: signal.messagingRouting, default: "Queue" }
127
+ routingTarget: { from: signal.messagingRoutingTarget }
128
+ fallbackQueue: { from: signal.messagingFallbackQueue }
129
+ userVerification: { from: signal.messagingSignedIn, default: true }
130
+ writes: "MessagingChannel (Metadata CRUD); IsActive via sObject update"
131
+ gating:
132
+ irreversible: false
133
+ note: "Reversible by deactivating the channel. Pre-chat form fields can be deactivated but the form cannot be fully deleted; removing a channel custom parameter needs the form field removed and the deployment republished first."
134
+ validate:
135
+ check: check-messaging-channel
136
+ passWhen: "GET MessagingChannel fullName=<normalized name> returns the targeted sessionHandlerType and target and the intended authMode; SOQL SELECT IsActive, SessionHandlerId, FallbackQueueId FROM MessagingChannel WHERE DeveloperName=<name> returns IsActive=true, and non-null SessionHandlerId/FallbackQueueId where the routing type requires them"
137
+ alternative: "Setup > Messaging Settings > New Channel > Messaging for In-App and Web; choose routing, then activate."
138
+ ```
139
+
140
+ Open items for the onboarding team: the `signal.*` keys do not exist in `onboarding-state.schema.json` yet
141
+ (`channels` allows only email/web); `userVerification: true` makes an Auth channel, which also needs the
142
+ user-verification step before signed-in customers can chat — decide if that is its own feature; the coordinator must
143
+ accept `outputs`; org perm names are not yet confirmed.
@@ -23,13 +23,30 @@ Configures `EmbeddedServiceConfig` metadata for Salesforce Messaging for In-App
23
23
  ## Scope
24
24
 
25
25
  - **In scope**: Creating new Embedded Service Deployments (API, Mobile, Web types) via Connect API; updating existing deployments with forms, branding, channel settings, and features via Metadata API; generating `EmbeddedServiceConfig` XML for updates
26
- - **Out of scope**: Creating the messaging channel itself (use `service-digital-engagement-channel-configure`), publishing deployments (Connect API post-step), creating Experience Sites (Connect API prerequisite for Web type)
26
+ - **Out of scope**: Creating the messaging channel itself (use `service-digital-engagement-channel-configure`), generating the website code snippet (offered only as a next step, see `references/code_snippet.md`), creating Experience Sites (Connect API prerequisite for Web type)
27
+
28
+ ---
29
+
30
+ ## Entry points: delegated or standalone
31
+
32
+ Decide this before asking anything.
33
+
34
+ - **Delegated** — the invocation carries `{ values, context }` with `context.calledFrom == "service-onboarding"`. The admin already approved `values` in the onboarding plan. Ask nothing; skip Clarifying Questions. If a required key is missing, stop and return `failed` naming it — do not guess.
35
+ - **Standalone** — no `context`. Run Clarifying Questions as written.
36
+
37
+ Both paths run the same pre-scan, write and validate steps. Full contract (payload, wording rules, result shape, registration entry): `references/onboarding_contract.md`.
38
+
39
+ ---
40
+
41
+ ## Transport
42
+
43
+ Org reads and writes go through the **headless-360 MCP `dispatch` / `dispatch_readonly`** tools on `/services/data/vXX.0/headless/metadata` (**Transport A, primary**). Use the **`sf` CLI** (**Transport B**) only for a type/verb that a read-only probe shows is not onboarded, or when the MCP is unavailable. Probe each type separately — never infer onboarding from a different type. Details, the GET → modify → full-document PUT rule, and the credential trap are in `references/onboarding_contract.md` §2. The `sf` commands in the steps below are the Transport B form. Exception: Web create always uses the `sf` CLI (step 17a).
27
44
 
28
45
  ---
29
46
 
30
47
  ## Clarifying Questions
31
48
 
32
- Before generating, ask the user if not already clear:
49
+ Before generating, ask the user if not already clear (standalone only):
33
50
 
34
51
  - **Create or update?** Are you creating a new deployment or updating an existing one?
35
52
  - **Deployment type?** API (headless), Mobile (native apps), or Web (browser widget)?
@@ -46,7 +63,7 @@ Gather or infer before proceeding:
46
63
 
47
64
  - **Operation**: `create` or `update`
48
65
  - **Deployment type**: `API`, `Mobile`, or `Web`
49
- - **Deployment name**: Used for `masterLabel` and the API name
66
+ - **Deployment name**: Used as `masterLabel`. Derive the API name (`fullName` / `DeveloperName`, Connect `name`) from it: replace each run of characters other than letters and digits with `_`, then trim leading/trailing `_` (`Acme Support Chat` → `Acme_Support_Chat`). The result must match `^[a-zA-Z][a-zA-Z0-9_]*$`. Use the API name for every lookup and write
50
67
  - **Channel name**: The `channelPlatformKey` of the associated messaging channel
51
68
 
52
69
  For **update** operations additionally:
@@ -69,12 +86,22 @@ All steps are sequential. Do not skip or reorder. Branch based on the operation
69
86
 
70
87
  1. **Verify org API version** — run `scripts/check-api-version.sh 67.0 <org-alias>` and report any errors it returns. If the script fails, generate a `sfdx-project.json` in the metadata output folder with `"sourceApiVersion": "67.0"`.
71
88
 
72
- 2. **Determine operation** — ask whether the user wants to create a new deployment or update an existing one.
89
+ 2. **Determine operation** — standalone: ask whether the user wants to create a new deployment or update an existing one. Delegated: taken from `values.operation`, then confirmed by the pre-scan (step 4a).
73
90
 
74
- 3. **Collect inputs** — gather deployment name, type, and channel name per Clarifying Questions above.
91
+ 3. **Collect inputs** — standalone: gather deployment name, type, and channel name per Clarifying Questions above. Delegated: bind them from `values`; stop with `failed` if `deploymentName`, `deploymentType` or `channelName` is missing.
92
+
93
+ 3a. **Probe transport** — read-only `GET` of `EmbeddedServiceConfig` via `dispatch_readonly`. Onboarded → Transport A. `UNSUPPORTED_OPERATION` or MCP unavailable → Transport B for that call. See `references/onboarding_contract.md` §2.
75
94
 
76
95
  4. **Read deployment settings reference** — load `references/deployment_settings.md` to understand all available configuration options.
77
96
 
97
+ 4a. **Pre-scan** — using the step 3a read, look for a deployment whose API name is the one derived from `deploymentName` (Required Inputs):
98
+ - none → operation is `create` (Phase 2A)
99
+ - exists and every targeted field already matches → **make no write**; return `already-configured` (delegated) or say so plainly (standalone). Skip to Phase 3
100
+ - exists with differences → operation is `update` (Phase 2B); announce each change, then write (standalone: ask for a yes first)
101
+ - exists but linked to a different channel → standalone: ask before repointing; delegated: return `failed`
102
+
103
+ Standalone with an existing deployment: offer no change / override / add to existing.
104
+
78
105
  ### Phase 2A — Create New Deployment
79
106
 
80
107
  Use this path when the operation is `create`.
@@ -99,11 +126,11 @@ Use this path when the operation is `create`.
99
126
  9. **Present output and next steps** — show the generated file and summarize what was configured. Recommend as next steps:
100
127
  - **Publish** the deployment via Connect API to make it live:
101
128
  ```bash
102
- sf api request rest "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" -X POST -o <org-alias>
129
+ sf api request rest "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" -X POST -b '{}' -o <org-alias>
103
130
  ```
104
131
  To obtain the `EMBEDDED_SERVICE_CONFIG_ID`:
105
132
  ```bash
106
- sf data query --query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" --target-org <org-alias>
133
+ sf data query --use-tooling-api --query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" --target-org <org-alias>
107
134
  ```
108
135
  - **Generate code snippet** for integration — see `references/code_snippet.md`
109
136
 
@@ -111,11 +138,11 @@ Use this path when the operation is `create`.
111
138
 
112
139
  Use this path when the operation is `update`.
113
140
 
114
- 10. **Retrieve the existing deployment** — retrieve the current `EmbeddedServiceConfig` metadata from the org before making changes:
141
+ 10. **Retrieve the existing deployment** — take the current `EmbeddedServiceConfig` from the org before making changes. Transport A: the `xmlRep` from the step 3a/4a `GET`. Transport B:
115
142
  ```bash
116
143
  sf project retrieve start --metadata EmbeddedServiceConfig:<DEPLOYMENT_NAME> --target-org <org-alias>
117
144
  ```
118
- Use the retrieved file as the starting structure. If retrieval is not possible, load `assets/esd_web_update_template.xml` as a fallback reference.
145
+ Use it as the starting structure — the update is always a **full document**, never a minimal payload (omitted inline blocks can be silently cleared). If retrieval is not possible, load `assets/esd_web_update_template.xml` as a fallback reference.
119
146
 
120
147
  11. **Apply messaging channel settings** — configure `<embeddedServiceMessagingChannel>` with:
121
148
  - `messagingChannel` — the channel's `channelPlatformKey`
@@ -146,18 +173,34 @@ Use this path when the operation is `update`.
146
173
  17. **Present output and next steps** — show the generated file and summarize what was configured. Recommend as next steps:
147
174
  - **Publish** the deployment via Connect API to make changes live:
148
175
  ```bash
149
- sf api request rest "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" -X POST -o <org-alias>
176
+ sf api request rest "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" -X POST -b '{}' -o <org-alias>
150
177
  ```
151
178
  To obtain the `EMBEDDED_SERVICE_CONFIG_ID`:
152
179
  ```bash
153
- sf data query --query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" --target-org <org-alias>
180
+ sf data query --use-tooling-api --query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" --target-org <org-alias>
154
181
  ```
155
182
  - **Generate code snippet** for integration — see `references/code_snippet.md`
156
183
 
184
+ ### Phase 2C — Apply to the org
185
+
186
+ Runs for both Phase 2A and 2B, except when the pre-scan returned `already-configured`. Standalone: confirm before writing. Delegated: the plan approval is the confirmation; still announce each write.
187
+
188
+ 17a. **Write the deployment** —
189
+ - Web create: Connect API (see `references/connect_api_creation.md`) via `sf api request rest` — always, not `dispatch` (MCP `dispatch` fails with `INTERNAL_ERROR` during site creation).
190
+ - API/Mobile create: Transport A `POST` `EmbeddedServiceConfig` (body carries `type`, `fullName`, `xmlRep`); Transport B `sf project deploy start`.
191
+ - Update: Transport A `PUT` of the **full** document; Transport B `sf project deploy start`.
192
+ Check `results[].success`, not just HTTP status. On failure stop and report the step — no silent retry.
193
+
194
+ 17b. **Re-read and diff** — `GET` the component again and confirm every intended field landed and no inline block (`embeddedServiceMessagingChannel`, forms) was dropped.
195
+
196
+ 17c. **Publish (Web only, only if something was written)** — `dispatch` `POST` on the fully-qualified publish path; if it returns a path/route error, run the `sf` publish command from the next-steps block above. Skip after a Web create alone when the create response has `isPublishSuccess: true` — the create already published.
197
+
157
198
  ### Phase 3 — Validate
158
199
 
159
200
  18. **Verify against checklist** — confirm all items in the Verification Checklist below pass.
160
201
 
202
+ 19. **Report** — delegated: return `{ "status": "success" | "already-configured" | "failed", "errorMessage": "...", "outputs": { ... } }` (shape in `references/onboarding_contract.md` §5). Standalone: the same outcome in plain language.
203
+
161
204
  ---
162
205
 
163
206
  ## Rules / Constraints
@@ -174,7 +217,9 @@ Use this path when the operation is `update`.
174
217
  | Pre-chat form fields must reference valid channel custom parameters | ChoiceList fields need the parameter deployed on the channel first |
175
218
  | File extension is `.EmbeddedServiceConfig-meta.xml` | Metadata API uses this specific extension |
176
219
  | Do not hardcode file paths — respect `sfdx-project.json` package directories | Customer orgs customize source paths |
177
- | Never include deploy/push commands in generated output | This skill produces artifacts only |
220
+ | Do not embed deploy/push commands inside generated files or artifacts | Artifacts stay portable; in-session writes happen in Phase 2C through the chosen transport |
221
+ | Update with the full retrieved document, never a minimal PUT | Omitted inline blocks can be silently cleared by the update |
222
+ | Pre-scan before every write; no write when the org already matches | Makes re-runs idempotent and keeps "already configured" honest |
178
223
  | Publish step (Connect API) required after Web ESD updates | Changes are not live until published |
179
224
 
180
225
  ---
@@ -188,6 +233,9 @@ Use this path when the operation is `update`.
188
233
  | Branding overrides not applied | Use Tooling API to update individual BrandingSet properties after the deployment is created |
189
234
  | Pre-chat ChoiceList not showing | ChoiceList requires two-step deploy: create ChoiceList first, then assign to form field |
190
235
  | Changes not appearing in widget | Web ESDs must be published via Connect API after any update |
236
+ | `sf api request rest` POST fails with "No 'mode' found in 'body' entry" | The CLI rejects a POST with no body (and `-b ""`). Pass `-b '{}'` — the publish endpoint takes no input |
237
+ | `sf api request rest` fails with "Nonexistent flag: --url" | The URL is a positional argument, not a flag, and must be fully qualified (`/services/data/vXX.0/connect/...`) |
238
+ | Web create via MCP `dispatch` returns `INTERNAL_ERROR` | Platform limitation of the MCP route during site creation — use `sf api request rest` for Web create. API/Mobile create and publish work via `dispatch` |
191
239
  | `embeddedServiceFlowConfig.enabled` error | Set to `false` unless you specifically need embedded flows (not routing flows) |
192
240
  | reCAPTCHA configuration rejected | reCAPTCHA is `@HideInWsdl` — must use Tooling API |
193
241
  | Business hours not taking effect | Only updating existing business hours works; creation is managed separately |
@@ -246,6 +294,7 @@ File structure follows the templates in `assets/`.
246
294
 
247
295
  | File | When to read |
248
296
  |------|-------------|
297
+ | `references/onboarding_contract.md` | Delegated mode (`context.calledFrom == "service-onboarding"`), org writes (transport), module registration |
249
298
  | `assets/esd_api_mobile_template.xml` | Before generating API or Mobile type deployments |
250
299
  | `assets/esd_web_update_template.xml` | Before generating Web type updates |
251
300
  | `references/deployment_settings.md` | When configuring deployment options beyond defaults |
@@ -15,9 +15,11 @@ Web-type Embedded Service Deployments cannot be created via Metadata API due to
15
15
  ## Connect API Endpoint
16
16
 
17
17
  ```text
18
- POST /connect/embeddedmessaging/deployment/setup
18
+ POST /services/data/vXX.0/connect/embeddedmessaging/deployment/setup
19
19
  ```
20
20
 
21
+ Always use the fully-qualified path (minimum `v67.0`). A bare `/connect/...` path is not routed.
22
+
21
23
  ### Request Body (Web)
22
24
 
23
25
  ```json
@@ -55,10 +57,13 @@ POST /connect/embeddedmessaging/deployment/setup
55
57
 
56
58
  ### Using Salesforce CLI (Web)
57
59
 
60
+ Always create Web deployments with the CLI. The same call through the headless-360 MCP `dispatch` fails with an
61
+ `INTERNAL_ERROR` server error during site creation.
62
+
58
63
  ```bash
59
64
  sf api request rest \
65
+ "/services/data/v67.0/connect/embeddedmessaging/deployment/setup" \
60
66
  --method POST \
61
- --url "/connect/embeddedmessaging/deployment/setup" \
62
67
  --body '{"name":"<NAME>","masterLabel":"<LABEL>","deploymentType":"Web","clientVersion":"WebV2","hostDomain":"<DOMAIN>","messagingChannelId":"<CHANNEL_ID>"}' \
63
68
  --target-org <org-alias>
64
69
  ```
@@ -67,8 +72,8 @@ sf api request rest \
67
72
 
68
73
  ```bash
69
74
  sf api request rest \
75
+ "/services/data/v67.0/connect/embeddedmessaging/deployment/setup" \
70
76
  --method POST \
71
- --url "/connect/embeddedmessaging/deployment/setup" \
72
77
  --body '{"name":"<NAME>","masterLabel":"<LABEL>","deploymentType":"API","messagingChannelId":"<CHANNEL_ID>"}' \
73
78
  --target-org <org-alias>
74
79
  ```
@@ -123,16 +128,20 @@ After creating the Web ESD via Connect API:
123
128
  After any update to a Web ESD (branding, forms, labels, settings), publish to make changes live:
124
129
 
125
130
  ```text
126
- POST /connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>
131
+ POST /services/data/vXX.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>
127
132
  ```
128
133
 
129
134
  ```bash
130
135
  sf api request rest \
131
- /services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID> \
136
+ "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" \
132
137
  --method POST \
138
+ --body '{}' \
133
139
  --target-org <org-alias>
134
140
  ```
135
141
 
142
+ The `--body '{}'` is required: a POST with no body (or `--body ""`) fails in the CLI with
143
+ "No 'mode' found in 'body' entry" before any request is sent.
144
+
136
145
  ---
137
146
 
138
147
  ## Known Limitations
@@ -0,0 +1,146 @@
1
+ # Onboarding contract — delegated mode, transport, pre-scan, registration
2
+
3
+ Read this when the invocation carries a `context` object, when you are about to write to the org, or when the
4
+ skill is being registered in an onboarding module. It implements the Feature Setup Skill Guidelines (Conversational
5
+ Onboarding, Service Cloud) for this skill.
6
+
7
+ ## 1. Two entry points, one write procedure
8
+
9
+ | | Delegated | Standalone |
10
+ |---|---|---|
11
+ | Detected by | invocation has `context.calledFrom == "service-onboarding"` | no `context` object |
12
+ | Values come from | `values` in the payload — already approved in the plan table | you ask, using the defaults in SKILL.md |
13
+ | Questions | none. A missing required key is a caller bug: stop and report `failed` naming the key. Never default a value the admin did not approve | the Clarifying Questions in SKILL.md |
14
+ | Wording | `discoveryMode == "guided"` → plain business language (§4). `"pickAreas"` → Salesforce terminology | Salesforce terminology (the Clarifying Questions as written) |
15
+ | Ends with | the structured result in section 5 | a plain-language summary of the same outcome |
16
+
17
+ Both paths converge on the same pre-scan → write → validate procedure. The only difference is where values come from.
18
+
19
+ Delegated payload:
20
+
21
+ ```json
22
+ {
23
+ "values": {
24
+ "operation": "create",
25
+ "deploymentType": "Web",
26
+ "deploymentName": "Acme Support Chat",
27
+ "channelName": "Acme_Support_Channel",
28
+ "siteName": "ESW_AcmeSupport_1700000000000"
29
+ },
30
+ "context": { "calledFrom": "service-onboarding", "discoveryMode": "guided" }
31
+ }
32
+ ```
33
+
34
+ Required `values`: `deploymentName`, `deploymentType`, `channelName`. `deploymentName` is the label; the API name is
35
+ derived from it (SKILL.md Required Inputs: `Acme Support Chat` → `Acme_Support_Chat`). `operation` defaults to `create` when the pre-scan
36
+ finds nothing and `update` when it finds a deployment. `siteName` is required for Web updates. Optional feature keys
37
+ (pre-chat fields, business hours, T&C, branding) are applied only when present — do not invent them.
38
+
39
+ ## 2. Transport — `/headless/metadata` first, `sf` CLI as fallback
40
+
41
+ **Transport A (primary): the headless-360 MCP `dispatch` / `dispatch_readonly` tools** against the synchronous
42
+ Metadata-CRUD route, fully-qualified: `/services/data/vXX.0/headless/metadata/<Type>?type=<Type>&fullName=<Name>`.
43
+
44
+ - `GET` = read (`dispatch_readonly`) → `{type, fullName, xmlRep}`. `POST` = create-only (duplicate → `DUPLICATE_VALUE`).
45
+ `PUT` = update. On writes the body must carry `type`, `fullName` **and** `xmlRep`.
46
+ - Response is synchronous: `{results:[{success, errors[], ...}]}`. HTTP 200 can still be a failure — inner `success` wins.
47
+ - **PUT is not a safe merge for `EmbeddedServiceConfig`.** Child collections survive an omitted block but inline
48
+ complex blocks can be silently cleared. Always GET → modify → PUT the **full** document. Never PUT a minimal payload.
49
+ Re-GET after the PUT and diff, so a dropped block is caught here and not in the widget.
50
+ - Use the same `dispatch` tool for the probe and for the write. `sf api request rest` / `curl` carry the `sf` CLI's
51
+ separate credential, which can be expired while the MCP token is valid — a REST URL called through the CLI is
52
+ **not** Transport A.
53
+
54
+ **Probe per type, per operation — do not infer from another type.** Before the first write run a read-only
55
+ `GET` for `EmbeddedServiceConfig` (and for any other type you are about to touch).
56
+
57
+ | Probe result | Meaning | Action |
58
+ |---|---|---|
59
+ | `xmlRep` returned, or "Metadata not found" style error | type is onboarded | Transport A |
60
+ | `UNSUPPORTED_OPERATION` for the type or verb | not onboarded for that verb | Transport B for that call only |
61
+ | auth / connection error | MCP unavailable | Transport B; say so |
62
+
63
+ **Transport B (fallback): `sf` CLI** — the retrieve/deploy commands already in SKILL.md. Use it only when the probe
64
+ says Transport A is unavailable for that type/verb, never as a convenience.
65
+
66
+ What is not a transport choice:
67
+ - **Web deployment creation is a Connect API call — send it with `sf api request rest`, not `dispatch`.** Through
68
+ `dispatch` it always fails with an `INTERNAL_ERROR` server error while building the ESW site; the same body via the CLI
69
+ succeeds. Do not try `dispatch` first.
70
+ - **Publish is a Connect API call.** Send it with `dispatch` on the fully-qualified path. If `dispatch` returns a
71
+ path/route error (not a business error), repeat that one call with `sf api request rest`.
72
+ - **Tooling API** work (custom labels, branding, reCAPTCHA) is not verified through `dispatch`. Use `sf` CLI.
73
+
74
+ ## 3. Pre-scan (idempotency)
75
+
76
+ Run before any write, both modes. Read `EmbeddedServiceConfig` by `fullName` = the API name derived from `deploymentName` (Transport A GET).
77
+
78
+ | Finding | Outcome |
79
+ |---|---|
80
+ | No such deployment | not set up → create path |
81
+ | Exists, and every targeted field already equals the target (channel link, `isEnabled`, type, and each optional feature supplied) | **already configured** — make no write, return `already-configured` |
82
+ | Exists, some targeted field differs | **drift** — announce each change ("pre-chat form: on → off"), then write. Standalone: ask for a yes first. Delegated: the plan approval covers it |
83
+ | Exists but links a different channel than `channelName` | Standalone: ask before repointing. Delegated: return `failed`, `errorMessage` = "deployment <name> already uses channel <other>" |
84
+
85
+ Standalone, deployment exists: offer exactly three choices — no change / override / add to existing.
86
+
87
+ The metadata read does not say whether the latest edits are **published**. After any write to a Web deployment,
88
+ publish. If nothing was written, do not publish.
89
+
90
+ ## 4. Questions in the admin's language (guided mode)
91
+
92
+ Ask about the outcome, not the Salesforce feature. Keep it to a handful; state the default with each.
93
+
94
+ | Instead of | Ask |
95
+ |---|---|
96
+ | "Which deployment type: API, Mobile or Web?" | "Where will customers chat with you — on your website, in a mobile app, or through your own custom app?" (website=Web, mobile app=Mobile, custom=API) |
97
+ | "Associate which `channelPlatformKey`?" | Not asked. Delegated: comes from the channel step. Standalone: "Which messaging channel should this chat use?" listing existing ones |
98
+ | "Enable pre-chat form fields?" | "Do you want to ask customers for their name and email before the chat starts? (Default: yes — name and email.)" |
99
+ | "Enable `isTermsAndConditionsEnabled`?" | "Do customers need to accept terms before chatting? (Default: no.)" |
100
+ | "Business hours record?" | "Should the chat only be offered during your business hours? (Default: no.)" |
101
+ | "Chat invitation conditions" | Skip in guided mode unless the admin raises it. It is a pickAreas/expert option |
102
+
103
+ ## 5. Result returned to the coordinator
104
+
105
+ ```json
106
+ {
107
+ "status": "success | already-configured | failed",
108
+ "errorMessage": "<empty unless failed>",
109
+ "outputs": {
110
+ "deploymentName": "Acme_Support_Chat",
111
+ "embeddedServiceConfigId": "<id or null>",
112
+ "published": true
113
+ }
114
+ }
115
+ ```
116
+
117
+ `status` and `errorMessage` are the contract. `outputs` is always returned; it is an addition to the documented shape.
118
+ On `failed`: `errorMessage` names the failed step and the platform error; stop; do not retry.
119
+
120
+ ## 6. Registration entry (draft for the onboarding team to place in a module)
121
+
122
+ ```yaml
123
+ - id: messagingDeployment
124
+ title: "Chat widget for your website or app"
125
+ description: "Create the chat widget (embedded messaging deployment) that customers use to start a messaging conversation: where it appears, what it asks before chat starts, and publishing it live."
126
+ delegateSkill: service-digital-engagement-deployment-configure
127
+ dependsOn: [messagingChannel]
128
+ revisionOwner: service-digital-engagement-deployment-configure
129
+ # org perms: confirm exact names with Digital Engagement licensing (not yet confirmed)
130
+ values:
131
+ deploymentType: { from: signal.messagingSurface, default: "Web" }
132
+ deploymentName: { from: signal.messagingWidgetName, default: "<company> Support Chat" }
133
+ channelName: { from: outputs.messagingChannel.channelName }
134
+ writes: "EmbeddedServiceConfig (Metadata CRUD); Web create via Connect API embeddedmessaging/deployment/setup (sf CLI); publish via Connect API; optional BrandingSet / custom labels via Tooling API"
135
+ gating:
136
+ irreversible: false
137
+ note: "Reversible by disabling the deployment (isEnabled=false). Pre-chat form fields can be deactivated but the form cannot be fully deleted."
138
+ validate:
139
+ check: check-messaging-deployment
140
+ passWhen: "GET EmbeddedServiceConfig fullName=<derived API name> returns isEnabled=true and the embeddedServiceMessagingChannel links values.channelName; for Web, the deployment has been published"
141
+ alternative: "Setup > Embedded Service Deployments > New Deployment > Messaging for In-App and Web; choose the channel, set pre-chat, then Publish."
142
+ ```
143
+
144
+ Open items for the onboarding team: the `signal.*` keys do not exist in `onboarding-state.schema.json` yet
145
+ (`channels` allows only email/web); the coordinator must accept `outputs` and pass `outputs.messagingChannel.channelName`
146
+ to this skill; org perm names are not yet confirmed.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: service-itsm-agentic-setup-incident-management
3
- description: "Orchestrator for Incident Management setup in Service Cloud ITSM: presents the features, tracks progress, and configures each — SLA & Milestones, Priority Matrix, Incident preferences, Major Incident Management, Incident persona PSG assignment, Service Management Privilege, and Incident audit tracking. Use for: set up or configure incident management, incident management walkthrough, what incident features can I configure; the incident preference toggles (default field validations, auto-close child incidents, auto-triage, assign with Einstein, restrict assigned group, rich text descriptions); Major Incident Management (approval group + MIM preferences); assigning the Incident Fulfiller or Incident Manager persona PSG; Service Management Privilege / privilege escalation setup. DO NOT TRIGGER for: the master on/off switch (service-itsm-incident-mgmt-configure), the Priority Matrix, SLA, or field history tracking alone, the Major Incident Manager PSG, creating/editing PSGs, or Problem/Change/Case Management."
3
+ description: "Orchestrator for Incident Management setup in Service Cloud ITSM: presents the features, tracks progress, and configures each — SLA & Milestones, Priority Matrix, Incident preferences, Major Incident Management, Incident persona PSG assignment, Service Management Privilege, and Incident audit tracking. Use for: set up or configure incident management, incident management walkthrough, what incident features can I configure; the incident preference toggles (default field validations, auto-close child incidents, auto-triage, assign with Einstein, restrict assigned group, rich text descriptions); Major Incident Management (approval group + MIM preferences); assigning the Incident Fulfiller or Incident Manager persona PSG; Service Management Privilege / privilege escalation setup. DO NOT TRIGGER for: the master on/off switch alone (use the IncidentMgmt SOR), the Priority Matrix, SLA, or field history tracking alone, the Major Incident Manager PSG, creating/editing PSGs, or Problem/Change/Case Management."
4
4
  metadata:
5
5
  version: "2.1"
6
6
  domains: ["Service"]
@@ -10,7 +10,6 @@ metadata:
10
10
  - "service-itsm-agentic-setup-cmdb-access-assign"
11
11
  - "service-itsm-agentic-setup-incident-sla-configure"
12
12
  - "service-itsm-agentic-setup-itsm-agentforce-permset-assign"
13
- - "service-itsm-incident-mgmt-configure"
14
13
  - "service-itsm-incident-priority-configure"
15
14
  mcpTools:
16
15
  headless-360:
@@ -52,7 +51,7 @@ until the user is done.
52
51
 
53
52
  **Delegated** features hand off to their child skill or SOR. A child skill runs its own confirmations and
54
53
  read-backs, so this skill only coordinates. A SOR is a recipe, not an agent: for a SOR hand-off this skill
55
- runs the SOR's steps itself and owns the confirmation and read-back (see Audit Tracking below).
54
+ runs the SOR's steps itself and owns the confirmation and read-back (see the master switch and Audit Tracking below).
56
55
  **Inline** features are run by this skill directly through the `headless-360` MCP server — **read the
57
56
  matching reference file before executing that feature** and follow it. Every inline operation is fetched at
58
57
  runtime: `discover` by intent, `describe` for the current route/schema/labels, then `dispatch_readonly`
@@ -105,10 +104,21 @@ and business context that informs which features are relevant.
105
104
  ### 2. Ensure the Incident Management master switch is on (prerequisite)
106
105
 
107
106
  Every feature below depends on the org-level `service-cloud-itsm-incident` master switch being enabled.
108
- Before showing the menu, delegate to `service-itsm-incident-mgmt-configure` to read current state; if on,
109
- it is a no-op — otherwise it confirms with the user before flipping it. **Skip only when the master switch
110
- was already confirmed *enabled* in this session** (see step 0). A cached "off"/unknown state MUST fall
111
- through to the delegation.
107
+ Before showing the menu, `discover` the `IncidentMgmt` SOR by intent and `describe` its master-feature
108
+ steps (`read-itsm-incident-feature-status`, `enable-itsm-incident-feature`,
109
+ `verify-itsm-incident-feature-status`). Follow its current invocation and prefix the stored path as its
110
+ version note says (`v67.0` is the minimum and a safe default). A `404` from a version above the org's
111
+ maximum is a version mismatch: retry once at `v67.0` before treating `404` as unavailable.
112
+ Do not use the Service-Foundation `IncidentManagement` look-alike or its broadcast toggles.
113
+ Read the master status via `dispatch_readonly` and decide on `status` first: `ENABLED` is an idempotent
114
+ no-op even if `enableBlockedReasons` is non-empty; `NOT_AVAILABLE` means halt (do not attempt enable);
115
+ for `NOT_ENABLED`, surface any `enableBlockedReasons` as plain text (their messages are HTML-escaped
116
+ markup) and halt if present. Otherwise show the exact off → on change and ask for explicit confirmation before
117
+ running the SOR's enable step via `dispatch`. Re-read via the SOR's verify step and require
118
+ `ENABLED` before continuing. On a declined confirmation, unexpected status, `401`/`403`/`404`,
119
+ failed write, or read-back mismatch, stop without showing the menu; never infer success from
120
+ the write response. **Skip only when the master switch was already confirmed *enabled* in this
121
+ session** (see step 0). A cached "off"/unknown state MUST fall through to the live read.
112
122
 
113
123
  ### 3. Present the feature menu as a multi-select
114
124
 
@@ -144,8 +154,8 @@ Apply these whenever an inline feature runs; the **Everywhere** rules also apply
144
154
  hand-off. They are irreversible or silently-wrong if missed.
145
155
 
146
156
  - **Resolve the right node (Preferences).** Target the ITSM Incident Management org-preferences node
147
- (controller `IPCManagementSetupController`), **not** the Service-Foundation look-alike
148
- (`IncidentMgmtSetupController`, broadcast channels + a master switch).
157
+ (the one with the six per-feature toggles), **not** the Service-Foundation look-alike whose toggles
158
+ are broadcast channels plus its own master switch.
149
159
  - **Two preferences are one-way / enable-only (Preferences).** *Restrict Assigned Group to Regular Groups*
150
160
  and *Enable Rich Text for Incident Descriptions* cannot be turned off once on. Never offer to disable
151
161
  them; require an explicit "I understand this can't be undone" confirmation before enabling; never enable
@@ -189,8 +199,8 @@ hand-off. They are irreversible or silently-wrong if missed.
189
199
  ## Rules
190
200
 
191
201
  - ALWAYS show "(via service-itsm-agentic-setup-incident-management)" in the setup header
192
- - ALWAYS run the master-switch prerequisite (Behavior step 2) before showing the menu, unless the user
193
- already confirmed the switch is on earlier in this conversation
202
+ - ALWAYS run the master-switch prerequisite (Behavior step 2) before showing the menu, unless a live
203
+ status read already confirmed the switch ENABLED on this org earlier in this session
194
204
  - ALWAYS present the feature menu before configuring any selected feature (the master-switch prerequisite
195
205
  is the only permitted action before the menu) — do not assume which feature the user wants, **except**
196
206
  when the user named a specific feature, in which case go straight to it (single-select is fine)
@@ -214,8 +224,8 @@ hand-off. They are irreversible or silently-wrong if missed.
214
224
  Before emitting any menu or summary, confirm each; adjust the output before sending if any is unchecked.
215
225
 
216
226
  - [ ] The header line ends with `(via service-itsm-agentic-setup-incident-management)`
217
- - [ ] The master switch was confirmed on (via `service-itsm-incident-mgmt-configure`) before the menu,
218
- unless already confirmed earlier in this conversation
227
+ - [ ] The master switch was confirmed on (via the `IncidentMgmt` SOR status/verify steps) before the menu,
228
+ unless a live read already confirmed it ENABLED on this org earlier in this session
219
229
  - [ ] The feature menu emitted BOTH the ASCII table AND an `AskUserQuestion` (`multiSelect: true`) in the
220
230
  same response (single-select only if the user already named a specific feature)
221
231
  - [ ] Each feature row's `Status` reflects the actual tracked state (`Not done`, `In progress`, `Done`)