@salesforce/afv-skills 1.65.0 → 1.65.1

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 (349) hide show
  1. package/package.json +1 -1
  2. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
  3. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
  4. package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
  5. package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
  6. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
  7. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
  8. package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
  9. package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
  10. package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
  11. package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
  12. package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
  13. package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
  14. package/skills/automation-company-profile-info-query/SKILL.md +0 -51
  15. package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
  16. package/skills/automation-flow-coordinate/SKILL.md +0 -95
  17. package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
  18. package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
  19. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
  20. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
  21. package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
  22. package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
  23. package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
  24. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
  25. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
  26. package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
  27. package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
  28. package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
  29. package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
  30. package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
  31. package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
  32. package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
  33. package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
  34. package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
  35. package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
  36. package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
  37. package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
  38. package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
  39. package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
  40. package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
  41. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
  42. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
  43. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
  44. package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
  45. package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
  46. package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
  47. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
  48. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
  49. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
  50. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
  51. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
  52. package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
  53. package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
  54. package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
  55. package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
  56. package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
  57. package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
  58. package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
  59. package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
  60. package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  61. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
  62. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
  63. package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
  64. package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
  65. package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  66. package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
  67. package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
  68. package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
  69. package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
  70. package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
  71. package/skills/commerce-credit-memo-create/SKILL.md +0 -139
  72. package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
  73. package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
  74. package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
  75. package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
  76. package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
  77. package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
  78. package/skills/commerce-fees-apply/SKILL.md +0 -227
  79. package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
  80. package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
  81. package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
  82. package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
  83. package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
  84. package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
  85. package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
  86. package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
  87. package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
  88. package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
  89. package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
  90. package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
  91. package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
  92. package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
  93. package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
  94. package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
  95. package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
  96. package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
  97. package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
  98. package/skills/commerce-product-details-get/SKILL.md +0 -363
  99. package/skills/commerce-product-search/SKILL.md +0 -563
  100. package/skills/commerce-react-storefront-create/SKILL.md +0 -350
  101. package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
  102. package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
  103. package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
  104. package/skills/communications-initial-setup-configure/SKILL.md +0 -630
  105. package/skills/communications-multisite-configure/SKILL.md +0 -571
  106. package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
  107. package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
  108. package/skills/communications-tmf-integrate/SKILL.md +0 -1368
  109. package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
  110. package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
  111. package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
  112. package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
  113. package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
  114. package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
  115. package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
  116. package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
  117. package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
  118. package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
  119. package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
  120. package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
  121. package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
  122. package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
  123. package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
  124. package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
  125. package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
  126. package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
  127. package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
  128. package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
  129. package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
  130. package/skills/data360-activation-create/SKILL.md +0 -104
  131. package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
  132. package/skills/data360-activation-target-create/SKILL.md +0 -93
  133. package/skills/data360-activation-v2-create/SKILL.md +0 -456
  134. package/skills/data360-audience-dmo-get/SKILL.md +0 -38
  135. package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
  136. package/skills/data360-calculated-insight-create/SKILL.md +0 -148
  137. package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
  138. package/skills/data360-code-extension-create/SKILL.md +0 -115
  139. package/skills/data360-communication-capping-create/SKILL.md +0 -227
  140. package/skills/data360-connection-create/SKILL.md +0 -491
  141. package/skills/data360-content-lens-create/SKILL.md +0 -181
  142. package/skills/data360-data-action-create/SKILL.md +0 -126
  143. package/skills/data360-data-action-target-create/SKILL.md +0 -181
  144. package/skills/data360-data-clean-room-create/SKILL.md +0 -238
  145. package/skills/data360-data-governance-create/SKILL.md +0 -746
  146. package/skills/data360-data-graph-create/SKILL.md +0 -82
  147. package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
  148. package/skills/data360-data-lake-object-create/SKILL.md +0 -207
  149. package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
  150. package/skills/data360-data-model-object-create/SKILL.md +0 -128
  151. package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
  152. package/skills/data360-data-space-create/SKILL.md +0 -161
  153. package/skills/data360-data-streams-create/SKILL.md +0 -324
  154. package/skills/data360-engagement-signal-get/SKILL.md +0 -38
  155. package/skills/data360-experiment-create/SKILL.md +0 -82
  156. package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
  157. package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
  158. package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
  159. package/skills/data360-identity-resolution-create/SKILL.md +0 -115
  160. package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
  161. package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
  162. package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
  163. package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
  164. package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
  165. package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
  166. package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
  167. package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
  168. package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
  169. package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
  170. package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
  171. package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
  172. package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
  173. package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
  174. package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
  175. package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
  176. package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
  177. package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
  178. package/skills/experience-afv-query/SKILL.md +0 -234
  179. package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
  180. package/skills/experience-apex-components-configure/SKILL.md +0 -69
  181. package/skills/experience-apex-pages-configure/SKILL.md +0 -107
  182. package/skills/experience-app-home-configure/SKILL.md +0 -76
  183. package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
  184. package/skills/experience-briefcase-configure/SKILL.md +0 -287
  185. package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
  186. package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
  187. package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
  188. package/skills/experience-content-assets-configure/SKILL.md +0 -86
  189. package/skills/experience-custom-domain-create/SKILL.md +0 -727
  190. package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
  191. package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
  192. package/skills/experience-flow-category-configure/SKILL.md +0 -117
  193. package/skills/experience-formula-configure/SKILL.md +0 -358
  194. package/skills/experience-global-actions-configure/SKILL.md +0 -69
  195. package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
  196. package/skills/experience-instrumentation-configure/SKILL.md +0 -64
  197. package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
  198. package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
  199. package/skills/experience-lightning-out-configure/SKILL.md +0 -129
  200. package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
  201. package/skills/experience-lightning-types-query/SKILL.md +0 -98
  202. package/skills/experience-malware-scan-configure/SKILL.md +0 -71
  203. package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
  204. package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
  205. package/skills/experience-notification-types-configure/SKILL.md +0 -206
  206. package/skills/experience-notifications-configure/SKILL.md +0 -75
  207. package/skills/experience-record-discovery-query/SKILL.md +0 -227
  208. package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
  209. package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
  210. package/skills/experience-schema-builder-open/SKILL.md +0 -38
  211. package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
  212. package/skills/experience-static-resources-configure/SKILL.md +0 -74
  213. package/skills/field-service-setup-coordinate/SKILL.md +0 -62
  214. package/skills/field-service-work-plan-configure/SKILL.md +0 -253
  215. package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
  216. package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
  217. package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
  218. package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
  219. package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
  220. package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
  221. package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
  222. package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
  223. package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
  224. package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
  225. package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
  226. package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
  227. package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
  228. package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
  229. package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
  230. package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
  231. package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
  232. package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
  233. package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
  234. package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
  235. package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
  236. package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
  237. package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
  238. package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
  239. package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
  240. package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
  241. package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
  242. package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
  243. package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
  244. package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
  245. package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
  246. package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
  247. package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
  248. package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
  249. package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
  250. package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
  251. package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
  252. package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
  253. package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
  254. package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
  255. package/skills/health-cloud-initial-configure/SKILL.md +0 -511
  256. package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
  257. package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
  258. package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
  259. package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
  260. package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
  261. package/skills/industries-account-score-settings-query/SKILL.md +0 -78
  262. package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
  263. package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
  264. package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
  265. package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
  266. package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
  267. package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
  268. package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
  269. package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
  270. package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
  271. package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
  272. package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
  273. package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
  274. package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
  275. package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
  276. package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
  277. package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
  278. package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
  279. package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
  280. package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
  281. package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
  282. package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
  283. package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
  284. package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
  285. package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
  286. package/skills/industries-compliance-configure/SKILL.md +0 -102
  287. package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
  288. package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
  289. package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
  290. package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
  291. package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
  292. package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
  293. package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
  294. package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
  295. package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
  296. package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
  297. package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
  298. package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
  299. package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
  300. package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
  301. package/skills/industries-decision-tables-configure/SKILL.md +0 -439
  302. package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
  303. package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
  304. package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
  305. package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
  306. package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
  307. package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
  308. package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
  309. package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
  310. package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
  311. package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
  312. package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
  313. package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
  314. package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
  315. package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
  316. package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
  317. package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
  318. package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
  319. package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
  320. package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
  321. package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
  322. package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
  323. package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
  324. package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
  325. package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
  326. package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
  327. package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
  328. package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
  329. package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
  330. package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
  331. package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
  332. package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
  333. package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
  334. package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
  335. package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
  336. package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
  337. package/skills/industries-home-health-skills-create/SKILL.md +0 -31
  338. package/skills/industries-home-health-users-create/SKILL.md +0 -29
  339. package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
  340. package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
  341. package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
  342. package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
  343. package/skills/industries-object-enablement-configure/SKILL.md +0 -86
  344. package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
  345. package/skills/integration-apex-settings-configure/SKILL.md +0 -61
  346. package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
  347. package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
  348. package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
  349. package/skills/platform-privacy-agent-settings-configure/SKILL.md +0 -752
@@ -1,218 +0,0 @@
1
- ---
2
- name: industries-health-engagement-settings-configure
3
- description: "Use this skill when users want to read and toggle two Health Cloud org preferences — Outbound Health Engagement (proactive patient outreach, `IndustriesSettings.OrgPreferences.outboundHealthEngagement`) and Empower Health Engagement (patient self-service, `IndustriesSettings.OrgPreferences.empowerHealthEngagement. Trigger when users mention health, engagement, settings, health engagement settings."
4
- metadata:
5
- version: "1.0"
6
- ---
7
-
8
- # Querying Health Engagement Settings
9
-
10
- ## When to Use This Skill
11
-
12
- Read and toggle two Health Cloud org preferences — Outbound Health Engagement (proactive patient outreach, `IndustriesSettings.OrgPreferences.outboundHealthEngagement`) and Empower Health Engagement (patient self-service, `IndustriesSettings.OrgPreferences.empowerHealthEngagement`). All routes are AURA-IS-CANONICAL: the health-engagement setup endpoint enforces a per-call `Health Cloud outbound enabled/EmpowerHealthEngagement` AccessCheck before write (throws `AuraHandledException` with a localized NoAccessMessage on denial), self-heals a stale-true preference when access is later revoked, and emits PFT telemetry on toggle. Substituting Metadata API `IndustriesSettings.enable*HealthEngagement` deploy is contract-lossy. Pre-call sequence: check user edit permission → read org access check for each feature → read current pref → toggle. `getOrgType` exposes the Health Engagement configuration variant used for UI routing.
13
-
14
- ## Workflow
15
-
16
- Two independent org preferences on one Setup page: Outbound Health Engagement
17
- (proactive outreach) and Empower Health Engagement (patient self-service).
18
- Each preference has its own read/access-check/toggle triple; the two triples
19
- do not compose — pick the one the customer named.
20
-
21
- Per-preference workflow (Outbound shown; Empower is symmetric):
22
-
23
- ### Phase 1: Gate the page
24
-
25
- checkUserHasEditPermission_1 requires Customize Application or
26
- System Admin. Same gate for both preferences.
27
-
28
- ### Phase 2: Check org access
29
-
30
- getOutboundHealthEngagementOrgAccessCheck_4 is the org
31
- licence/feature gate. Side effect — a false response auto-resets the preference
32
- to false server-side.
33
-
34
- ### Phase 3: Read current value
35
-
36
- getOutboundHealthEngagementPref_2 returns the current
37
- preference value.
38
-
39
- ### Phase 4: Write the toggle
40
-
41
- toggleOutboundHealthEngagementPref_6 PATCHes the
42
- preference. The request body carries a required boolean under `value` (a missing
43
- boolean surfaces as a deserialization error before the AccessCheck runs). Success
44
- returns an empty response body; on AccessCheck denial the step throws
45
- AuraHandledException carrying a localized NoAccessMessage label.
46
-
47
- ### Phase 5: Verify the write
48
-
49
- verify-toggleOutboundHealthEngagementPref_6 reads back the
50
- value (the toggle returns void, so a post-write GET is the only confirmation of
51
- the new state).
52
-
53
- Access denial contract: when the per-preference AccessCheck is off, the toggle
54
- step throws AuraHandledException carrying a localized NoAccessMessage label.
55
- Agents must not retry — remediation is org licensing, not caller-side.
56
-
57
- Metadata API is not a viable substitute: an IndustriesSettings deploy is
58
- scratch-org gated and drops the per-call AccessCheck + PFT emit; every step
59
- here is AURA-IS-CANONICAL.
60
-
61
- ## Critical Constraints
62
-
63
- **Preconditions:**
64
-
65
- - Health Cloud must be licensed and provisioned for the org. The `HealthEngagementSettings` Setup page is only reachable when the HealthCloud feature is enabled (the controller's per-method AccessCheck flags `Outbound Health Engagement feature` / `orgHasEmpowerHealthEngagement` will otherwise return false and the toggles will be hidden / non-functional). (check: `Outbound Health Engagement feature / Health Engagement enabled`)
66
- - The running user must hold Customize Application or System Administrator permission. Every controller method is access-guarded by `Customize Application permission`; unprivileged users see read-only toggles and a 403-equivalent on write. (check: `Customize Application permission`)
67
-
68
- ## Verification Checklist
69
-
70
- After every write operation, confirm the effect by re-reading state:
71
-
72
- - After `toggleOutboundHealthEngagementPref_6`: call `verify-toggleOutboundHealthEngagementPref_6` (`GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-pref`)
73
- - After `toggleEmpowerHealthEngagementPref_7`: call `verify-toggleEmpowerHealthEngagementPref_7` (`GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-pref`)
74
-
75
- ## Operations Reference
76
-
77
- Operations grouped by purpose. Use these as the building blocks for the workflows above.
78
-
79
- ### Summary
80
-
81
- | Operation | Purpose | Status | Call | Depends on |
82
- |-----------|---------|--------|------|------------|
83
- | `checkUserHasEditPermission_1` | read | implemented | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/check-user-has-edit-permission` | — |
84
- | `getOrgType_8` | read | implemented | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-org-type` | — |
85
- | `getOutboundHealthEngagementOrgAccessCheck_4` | read | implemented | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-org-access-check` | — |
86
- | `getEmpowerHealthEngagementOrgAccessCheck_5` | read | implemented | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-org-access-check` | — |
87
- | `getOutboundHealthEngagementPref_2` | read | implemented | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-pref` | `getOutboundHealthEngagementOrgAccessCheck_4` |
88
- | `getEmpowerHealthEngagementPref_3` | read | implemented | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-pref` | `getEmpowerHealthEngagementOrgAccessCheck_5` |
89
- | `toggleOutboundHealthEngagementPref_6` | read | implemented | `PATCH /headless/invoke/industries/industries-healthcare/health-engagement-setup/toggle-outbound-health-engagement-pref` | `checkUserHasEditPermission_1`, `getOutboundHealthEngagementOrgAccessCheck_4`, `getOutboundHealthEngagementPref_2` |
90
- | `toggleEmpowerHealthEngagementPref_7` | read | implemented | `PATCH /headless/invoke/industries/industries-healthcare/health-engagement-setup/toggle-empower-health-engagement-pref` | `checkUserHasEditPermission_1`, `getEmpowerHealthEngagementOrgAccessCheck_5`, `getEmpowerHealthEngagementPref_3` |
91
- | `verify-toggleOutboundHealthEngagementPref_6` | verify | — | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-pref` | `toggleOutboundHealthEngagementPref_6` |
92
- | `verify-toggleEmpowerHealthEngagementPref_7` | verify | — | `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-pref` | `toggleEmpowerHealthEngagementPref_7` |
93
-
94
- ### Dependency graph
95
-
96
- ```mermaid
97
- graph TD
98
- checkUserHasEditPermission_1["checkUserHasEditPermission_1 (read)"]
99
- getOrgType_8["getOrgType_8 (read)"]
100
- getOutboundHealthEngagementOrgAccessCheck_4["getOutboundHealthEngagementOrgAccessCheck_4 (read)"]
101
- getEmpowerHealthEngagementOrgAccessCheck_5["getEmpowerHealthEngagementOrgAccessCheck_5 (read)"]
102
- getOutboundHealthEngagementPref_2["getOutboundHealthEngagementPref_2 (read)"]
103
- getEmpowerHealthEngagementPref_3["getEmpowerHealthEngagementPref_3 (read)"]
104
- toggleOutboundHealthEngagementPref_6["toggleOutboundHealthEngagementPref_6 (read)"]
105
- toggleEmpowerHealthEngagementPref_7["toggleEmpowerHealthEngagementPref_7 (read)"]
106
- verify_toggleOutboundHealthEngagementPref_6["verify-toggleOutboundHealthEngagementPref_6 (verify)"]
107
- verify_toggleEmpowerHealthEngagementPref_7["verify-toggleEmpowerHealthEngagementPref_7 (verify)"]
108
- getOutboundHealthEngagementOrgAccessCheck_4 --> getOutboundHealthEngagementPref_2
109
- getEmpowerHealthEngagementOrgAccessCheck_5 --> getEmpowerHealthEngagementPref_3
110
- checkUserHasEditPermission_1 --> toggleOutboundHealthEngagementPref_6
111
- getOutboundHealthEngagementOrgAccessCheck_4 --> toggleOutboundHealthEngagementPref_6
112
- getOutboundHealthEngagementPref_2 --> toggleOutboundHealthEngagementPref_6
113
- checkUserHasEditPermission_1 --> toggleEmpowerHealthEngagementPref_7
114
- getEmpowerHealthEngagementOrgAccessCheck_5 --> toggleEmpowerHealthEngagementPref_7
115
- getEmpowerHealthEngagementPref_3 --> toggleEmpowerHealthEngagementPref_7
116
- toggleOutboundHealthEngagementPref_6 --> verify_toggleOutboundHealthEngagementPref_6
117
- toggleEmpowerHealthEngagementPref_7 --> verify_toggleEmpowerHealthEngagementPref_7
118
- ```
119
-
120
- ### Read operations
121
-
122
- #### `checkUserHasEditPermission_1`
123
-
124
- Returns whether the running user holds Customize Application or System Administrator. Gates whether toggle controls are editable on the Setup page. AURA-IS-CANONICAL — no public API exposes this single-perm probe; Tooling `UserPermissionAccess` requires a follow-up join and doesn't replicate the controller's Customize Application permission semantics.
125
-
126
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/check-user-has-edit-permission` — status: `implemented`
127
-
128
- **Output:** boolean — true when the running user holds Customize Application or System Administrator permission.
129
-
130
- #### `getOrgType_8`
131
-
132
- Returns a string identifying this org's Health Engagement configuration variant; the Setup UI uses it to choose between alternative configuration files. AURA-IS-CANONICAL — no Connect / Tooling / sObject / Metadata surface exposes this Setup-page-specific org-flavor read.
133
-
134
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-org-type` — status: `implemented`
135
-
136
- **Output:** string — Health Engagement configuration-variant identifier; the Setup UI keys alternative config files off this value.
137
-
138
- #### `getOutboundHealthEngagementOrgAccessCheck_4`
139
-
140
- Returns whether the org has Outbound Health Engagement feature AccessCheck enabled. SIDE EFFECT: when access is denied AND `IndustriesSettings.OrgPreferences.outboundHealthEngagement` is currently true, force-resets the pref to false (controller line 105). AURA-IS-CANONICAL — the self-heal is server-enforced; no Metadata/Tooling read replicates it.
141
-
142
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-org-access-check` — status: `implemented`
143
-
144
- **Output:** boolean — true when the org has `Outbound Health Engagement feature` access. False also indicates the side-effect auto-reset of the outboundHealthEngagement pref to false has fired this call.
145
-
146
- #### `getEmpowerHealthEngagementOrgAccessCheck_5`
147
-
148
- Returns whether the org has Health Engagement enabled AccessCheck enabled. SIDE EFFECT: when access is denied AND `IndustriesSettings.OrgPreferences.empowerHealthEngagement` is currently true, force-resets the pref to false (controller line 119). AURA-IS-CANONICAL — the self-heal is server-enforced; no Metadata/Tooling read replicates it.
149
-
150
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-org-access-check` — status: `implemented`
151
-
152
- **Output:** boolean — true when the org has `Health Engagement enabled` access. False also indicates the side-effect auto-reset of the empowerHealthEngagement pref to false has fired this call.
153
-
154
- #### `getOutboundHealthEngagementPref_2`
155
-
156
- Returns the current boolean state of `IndustriesSettings.OrgPreferences.outboundHealthEngagement`. AURA-IS-CANONICAL — Metadata API retrieve of `IndustriesSettings` operates at XML-deploy/retrieve granularity over the whole Settings type, not a single-pref read; no sObject column exposes this org pref directly.
157
-
158
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-pref` — status: `implemented`
159
-
160
- **Depends on:** `getOutboundHealthEngagementOrgAccessCheck_4`
161
-
162
- **Output:** boolean — current value of `IndustriesSettings.OrgPreferences.outboundHealthEngagement`.
163
-
164
- #### `getEmpowerHealthEngagementPref_3`
165
-
166
- Returns the current boolean state of `IndustriesSettings.OrgPreferences.empowerHealthEngagement`. AURA-IS-CANONICAL — Metadata API retrieve of `IndustriesSettings` operates at XML-deploy/retrieve granularity over the whole Settings type, not a single-pref read; no sObject column exposes this org pref directly.
167
-
168
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-pref` — status: `implemented`
169
-
170
- **Depends on:** `getEmpowerHealthEngagementOrgAccessCheck_5`
171
-
172
- **Output:** boolean — current value of `IndustriesSettings.OrgPreferences.empowerHealthEngagement`.
173
-
174
- #### `toggleOutboundHealthEngagementPref_6`
175
-
176
- Sets `IndustriesSettings.OrgPreferences.outboundHealthEngagement` to the request body `value` (controller line 135). Throws `AuraHandledException` with the localized `OutboundHealthEngagementNoAccessMessage` label when Outbound Health Engagement feature AccessCheck is denied; emits a PFT `proactiveEngagement.enabled` / `.disabled` telemetry event on success. AURA-IS-CANONICAL — Metadata API `IndustriesSettings.enableOutboundHealthEngagement` deploy drops the per-call AccessCheck enforcement, the localized error contract, and the PFT emit, and is not supported in scratch org definitions.
177
-
178
- **Call:** `PATCH /headless/invoke/industries/industries-healthcare/health-engagement-setup/toggle-outbound-health-engagement-pref` — status: `implemented`
179
-
180
- **Inputs:**
181
-
182
- - `value` *(`boolean`)*
183
-
184
- **Depends on:** `checkUserHasEditPermission_1`, `getOutboundHealthEngagementOrgAccessCheck_4`, `getOutboundHealthEngagementPref_2`
185
-
186
- #### `toggleEmpowerHealthEngagementPref_7`
187
-
188
- Sets `IndustriesSettings.OrgPreferences.empowerHealthEngagement` to the request body `value` (controller line 150). Throws `AuraHandledException` with the localized `EmpowerHealthEngagementNoAccessMessage` label when Health Engagement enabled AccessCheck is denied; emits a PFT telemetry event on success. AURA-IS-CANONICAL — Metadata API `IndustriesSettings.enableEmpowerHealthEngagement` deploy drops the per-call AccessCheck enforcement, the localized error contract, and the PFT emit, and is not supported in scratch org definitions.
189
-
190
- **Call:** `PATCH /headless/invoke/industries/industries-healthcare/health-engagement-setup/toggle-empower-health-engagement-pref` — status: `implemented`
191
-
192
- **Inputs:**
193
-
194
- - `value` *(`boolean`)*
195
-
196
- **Depends on:** `checkUserHasEditPermission_1`, `getEmpowerHealthEngagementOrgAccessCheck_5`, `getEmpowerHealthEngagementPref_3`
197
-
198
- ### Verify operations
199
-
200
- #### `verify-toggleOutboundHealthEngagementPref_6`
201
-
202
- Read back via `getOutboundHealthEngagementPref` to confirm the toggle wrote the requested value to `IndustriesSettings.OrgPreferences.outboundHealthEngagement`. The toggle returns `void`, so a verifying read is the only post-write confirmation.
203
-
204
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-outbound-health-engagement-pref`
205
-
206
- **Depends on:** `toggleOutboundHealthEngagementPref_6`
207
-
208
- **Output:** boolean — should match the value passed to the preceding toggle call.
209
-
210
- #### `verify-toggleEmpowerHealthEngagementPref_7`
211
-
212
- Read back via `getEmpowerHealthEngagementPref` to confirm the toggle wrote the requested value to `IndustriesSettings.OrgPreferences.empowerHealthEngagement`. The toggle returns `void`, so a verifying read is the only post-write confirmation.
213
-
214
- **Call:** `GET /headless/invoke/industries/industries-healthcare/health-engagement-setup/get-empower-health-engagement-pref`
215
-
216
- **Depends on:** `toggleEmpowerHealthEngagementPref_7`
217
-
218
- **Output:** boolean — should match the value passed to the preceding toggle call.
@@ -1,131 +0,0 @@
1
- ---
2
- name: industries-home-health-agentforce-setup-configure
3
- description: "Enable Agentforce/Einstein GenAI platform toggles and build the Home Health agent (with its subagent), optionally grounded on a Data Cloud data library, plus the Voice Call layout and care-coordinator entity-access permission set. Triggers on \"set up Agentforce for Home Health\", \"build the Home Health agent\", \"enable Einstein GenAI for Home Health\", or as a delegation target from `home-health-guided-setup` Phase 13."
4
- metadata:
5
- relatedSkills:
6
- - agentforce-generate
7
- version: "1.0"
8
- cliTools:
9
- - tool:
10
- - "jq"
11
- semver: ">=1.6"
12
- - tool:
13
- - "sf"
14
- semver: ">=2.0.0"
15
- ---
16
-
17
- # Home Health — Agentforce Setup
18
-
19
- Child skill extracted from `home-health-guided-setup` Phase 13 (`[enablement toggles + layout + perms automate; agent build + subagent + data library are headlessly automatable on a Data-Cloud-provisioned org; only Voice steps are blocked by org provisioning and a narrow prompt-action publish-500]`) · gated by `HealthCloud.orgHasHomeHealthAgentWithoutGenAI` — only run this phase once real Agentforce/Einstein agents are in scope for the customer.
20
-
21
- **CANONICAL EXECUTION SEQUENCE for this phase (follow in this order):**
22
-
23
- 1. **Enable the settings first.** Run **Step 0** (the four `Einstein Generative AI` platform toggles) — it turns on the Agentforce platform itself and is the prerequisite for everything downstream; check `EinsteinGptSettings.enableEinsteinGptPlatform` state from Phase 0 first (if already on from an earlier phase, Step 0 is idempotent). Then run **Step 1** (`EnableAgentPref`, the HC-specific `healthCloudGenAIPref`). These are the enablement toggles — do them before any agent authoring.
24
- 2. **Create the default agent.** Step 0's toggles #3/#4 (`AgentPlatformSettings.enableAgentPlatform` + `EinsteinCopilotSettings.enableEinsteinGptCopilot`) activate the built-in **Agentforce (Default) Agent** — the org's `Copilot_for_Salesforce` `BotDefinition` (`Type=InternalCopilot`) flips its `BotVersion.Status` to `Active`. Confirm it is Active (`SELECT Status FROM BotVersion WHERE BotDefinitionId=<the InternalCopilot BotDefinition Id>` → `Active`) before building the HH agent.
25
- 3. **Create the Home Health agent with its subagent.** Run **Step 4** — build the HH agent + its `PatientHomeHealthcareMgmt` subagent end-to-end and automatically. It depends ONLY on Step 0's toggles, NOT on steps 1–3 (SCV/contact-center, which are org-provisioning-gated) and NOT on Data Cloud (that gates only step 5's library grounding). Do not defer Step 4 to manual just because the SCV/Bot-legal-terms paths are blocked; those are separate dependency chains.
26
- 4. **Check Data Cloud enablement.** Data Cloud is required ONLY if the customer wants to set up a data library (Step 5) to ground the agent — it is NOT needed for anything above. Probe provisioning via the data-library prerequisites check / the Data-Cloud-enabled check (see Step 5).
27
- - **If Data Cloud is NOT enabled →** do NOT block or fail silently on the whole phase. **Prompt the user** that Data Cloud must be enabled/provisioned in order to set up the data library, then **continue to the next phase (or any other pending steps in this phase — e.g. steps 6/7)** without the library. An empty `rag_feature_config_id` is the correct end state on a non-Data-Cloud org; the agent built in step 3 is already fully active without it.
28
- - **If Data Cloud IS enabled →** proceed to **Step 5** and **ask the user, in interaction mode, how to set up the data library** — which library grounds which agent (create a new library vs attach an existing one, its name/source). Do not fabricate the library or its grounding target.
29
-
30
- **Group 13 scorecard:** `EnableAgentPref` ✅ automate (headless preference-set action) · `CreateContactCenter` ❌ NOT-here — SCV OrgProvisioning gate (statusCode 216), EXTERNAL-TD/customer AWS · `AssignContactCenter` ⚠️ mechanism confirmed (`User.CallCenterId` PATCH) but blocked in SCV context by step 2, `[data — ask users]` · `AssignHomeHealthTopic` ✅ automate END-TO-END, run INDEPENDENTLY right after Step 0 (no `[ask]` gate) — a fresh agent + its `PatientHomeHealthcareMgmt` subagent built, published, and set **Active** via the `sf agent` CLI (preferred) or `POST /nextgen-authoring/bundles` (note: NO `/connect` prefix); the sole residual is a narrow `generatePromptResponse://` prompt-action publish-500 (a filed platform defect, `-306402626`) → that action falls through to Agent Builder. Proven on an org with no Data Cloud, no `industries_hls_einstein` package, and Bot-legal-terms unaccepted. · `DataCloudLibraryAssignAgent` ✅ automate — a grounding library can be created (`POST /einstein/data-libraries` 201) and grounded on the agent (`assignLibrary` 200) on a Data-Cloud-provisioned org; a 501/500 on an unprovisioned org is a Data-Cloud **provisioning** gap, not an API gap; `[ask]` which library grounds which agent · `VoiceCallPageLayout` ✅ automate (classic Layout Tooling PATCH) · `SetupAgentEntityAccess` ⚠️ mechanism confirmed (PermissionSet+ObjectPermissions Data API) but VoiceCall excluded from perms picklist, `[data — ask permset/entities]`.
31
-
32
- Group 13 (`AgentforceSetup`), 7 steps:
33
-
34
- **Step 0 — Agentforce platform enablement (three required platform toggles; Bot Settings is NOT one of them) `[automate — MDAPI Settings deploy; end-to-end]`.** Before any agent authoring (steps 4–5) can happen, the org's Agentforce platform must be turned on. In the Setup UI this is a chain of toggles under **Einstein Generative AI** that must be flipped **in dependency order** — and the later ones only become available *after* the earlier ones are on. The three **required** ones (#1, #3, #4 below) are headless via a single/sequenced **Metadata API `Settings` deploy** (a Metadata API deploy of `settings/*.settings-meta.xml` (the `/headless/metadata` path)), NOT the discovery-feature API (there is **no** `agentforce`/`einstein-*` discovery feature — every candidate name returns `NOT_FOUND`) and NOT a Tooling PATCH. ⚠️ **`BotSettings.enableBots` (listed below as "opt" for context) is NOT a prerequisite for building the Employee (`InternalCopilot`) agent this skill produces — the agent publishes + activates with `enableBots=false`. Do NOT include it in the required enablement set, and do NOT block Step 0 or Step 4 if it can't be turned on.** Deploy the three required toggles in this order (each `Succeeded`, each re-retrieved to confirm persistence):
35
-
36
- | # | Setup UI toggle | Settings type · field → value | Notes |
37
- |---|---|---|---|
38
- | 1 | Einstein Generative AI Platform | `EinsteinGptSettings.enableEinsteinGptPlatform = true` | master switch — **must be first** (the one hard-proven ordering dependency) |
39
- | opt | Agents/Bots runtime | `BotSettings.enableBots = true` | ⚠️ **NOT A PREREQUISITE — skip it for the default (Employee/`InternalCopilot`) agent.** Only needed if you deliberately build the optional *service/messaging* variant (`EinsteinServiceAgent`, patient-facing Messaging/voice, bound to the Messaging channel). Deploying it can fail `Error: Bot — "Legal Terms acceptance and/or necessary feature dependencies required to enable Bot Settings"` — a MANUAL one-time Einstein Bots legal-terms acceptance in Setup (`/lightning/setup/EinsteinBots/home`) with no API/MDAPI/discovery lever. Agent publish + activate succeed to a `Type=InternalCopilot` `BotDefinition` with `enableBots=false`. Never gate the build on this toggle. |
40
- | 3 | Agentforce Studio → **Agentforce Agent** | `AgentPlatformSettings.enableAgentPlatform = true` | the Studio agent toggle — flip it **before** Agent availability (matches the UI order the admin walks) |
41
- | 4 | Agentforce → **Agent availability** | `EinsteinCopilotSettings.enableEinsteinGptCopilot = true` | the "turn on Agent availability" toggle — comes last |
42
-
43
- > **Ordering note (honest provenance):** only #1 (`enableEinsteinGptPlatform`) has been confirmed to hard-require coming first — the remaining toggles all deploy successfully as independent MDAPI writes, so a strict server-side dependency between #3 and #4 has **not** been established. The #3-before-#4 order above follows the **Setup UI flow** (Agentforce Studio agent, then Agent availability), which is the order to prefer. If a future run finds one toggle rejects because another isn't on yet, that's the real dependency signal — reorder to satisfy it and update this table.
44
-
45
- - ⚠️ **`EinsteinAgentSettings` is a decoy — do NOT touch it.** `EinsteinAgentSettings` (fields `einsteinAgentRecommendations`/`summarizationCopilot`/…) is the **legacy Service-Cloud "Einstein Agent" recommendations** feature, unrelated to Agentforce. Its `enableEinsteinAgent`-style guesses fail deploy (`Element enableEinsteinAgent invalid at this location`). The four real types are exactly `EinsteinGptSettings`, `BotSettings`, `EinsteinCopilotSettings`, `AgentPlatformSettings`.
46
- - ⚠️ **Don't guess type names — enumerate them.** `Agentforce`, `AgentforceStudio`, `GenAiSettings`, `GenAiAgent`, `CopilotSettings` are all **invalid** and are *silently dropped* on retrieve (no error, just missing files — the failure mode that wastes a cycle). Discover the org's real Settings subtypes first: `sf org list metadata --metadata-type Settings --json | jq -r '.result[].fullName'` (surfaces `Bot`, `EinsteinGpt`, `EinsteinCopilot`, `AgentPlatform`, etc.).
47
- - ⚠️ **mdapi-dir vs source-format filename.** A source-format deploy uses `settings/EinsteinGpt.settings-meta.xml`; a raw `--metadata-dir` mdapi deploy needs the file named `settings/EinsteinGpt.settings` (dropping `-meta.xml`) or it fails "associated settings metadata is missing from the settings folder." Prefer the source-format Metadata API deploy of the `settings/` folder (proven).
48
- - **Verify by OBJECT ACCESSIBILITY, not a settings read** (the reliable signal — same philosophy as the FSL package-presence gate). Before enablement, `GET /sobjects/<obj>/describe` for `BotDefinition`, `GenAiPlannerDefinition`, `GenAiPluginDefinition`, `GenAiFunctionDefinition` all return `NOT_FOUND`. The Agentforce **platform** toggles (#1, then #3 + #4) bring them online — `BotDefinition` + `GenAiPlannerDefinition` first, then `GenAiPluginDefinition` + `GenAiFunctionDefinition`. **`enableBots` (the "opt" row) is NOT what makes these describable/createable** — the full `BotDefinition` (`Type=InternalCopilot`) + `GenAiPlannerDefinition` + `GenAiPluginDefinition` set can be created and activated with `enableBots=false`. (`GenAiPlugin` — the runtime-instance object — stays `NOT_FOUND`; the metadata-authored variant is `GenAiPluginDefinition`, so that's expected, not a failure.)
49
- - **The "Agentforce (Default) Agent" toggle in Agentforce Studio is NOT a settings flag — it's the activation state of the built-in default agent.** Enabling the Studio-agent + Agent-availability toggles (#3/#4) is what turns it on; the org's built-in `Copilot_for_Salesforce` agent (`BotDefinition` `Type=InternalCopilot`) has its `BotVersion.Status` flip to `Active`. Verify with `SELECT Status FROM BotVersion WHERE BotDefinitionId=<the InternalCopilot BotDefinition Id>` → `Active`. Don't hunt for a `Settings` field behind it — there isn't one (`EinsteinCopilotSettings` carries exactly one field).
50
- - **Relationship to step 1 below and the `setPrefs` note:** step 1 (`EnableAgentPref`) is the HC-specific `healthCloudGenAIPref`; toggles #3/#4 here (`AgentPlatformSettings.enableAgentPlatform` + `EinsteinCopilotSettings.enableEinsteinGptCopilot`) are the same two platform prefs the standing-changes note documents via the agent-preferences set action (`ORG_PREFERENCE_AGENT_PLATFORM_ENABLED` + `ORG_PREFERENCE_EINSTEIN_GPTCOPILOT_ENABLED`) — the **MDAPI `Settings` deploy here is the reliable cross-org path** (works even when the Aura controller/UI toggle isn't wired), and it additionally covers `enableEinsteinGptPlatform` (plus `enableBots` *if* you're building the optional messaging variant — otherwise skip it). Prefer this deploy chain; fall back to the preferences-set action only if a deploy channel isn't available.
51
- - ⚠️ **Enablement ≠ entitlement.** These toggles turn the feature *on*; actual agent *execution* (LLM calls at runtime) still depends on the org carrying the **Agentforce / Einstein GenAI license entitlement**. If it's absent the objects exist but runtime invocation fails — surface that to the admin rather than claiming end-to-end readiness. Standing ON (the platform toggles you deployed persist — #1/#3/#4, plus `enableBots` only if you enabled the optional messaging variant; disclose, don't clean up).
52
-
53
- 1. `EnableAgentPref` `[automate — headless]` — org link: `/lightning/setup/PackageToCoreSettings/home`; help doc: https://sfdc.co/HomeHealthAgentforce. Reclassified from `[manual]`. Controller `PackageToCoreSetupController` via `/headless/invoke`: read `getPreference` `params_schema:[{"name":"orgPref","type":"String"}]` body `{"orgPref":"healthCloudGenAIPref"}`; write `setPreference` (adds `{"name":"value","type":"boolean"}`) body `{"orgPref":"healthCloudGenAIPref","value":true}` → 200. Read back to confirm the flip persisted. GOTCHA: `isPackageEnabled` is `false` when the legacy HealthCloud managed package isn't installed, so the Setup UI may not even render this toggle — but the **API write persists regardless of UI-visibility gating**. ⚠️ Standing change — leave ON.
54
- 2. `CreateContactCenter` `[NOT automatable here — blocked by SCV OrgProvisioning gate]` — org link: `/lightning/setup/ServiceCloudVoice/home`; help doc: https://sfdc.co/HomeHealthServiceCloudVoice. Even when the `ServiceCloudVoicePsl` license is active with free seats, a real SCV contact center can't necessarily be created: the SCV-enabled-toggle action over `/headless/invoke` can return 200 with embedded `OrgProvisioning:{statusCode:216,"Failed Org Status Check Fatal Error",success:false}` and `CreateContactCenter actionable:false`; a direct contact-center-create call can 500 "Make sure … Salesforce Voice is turned on." The gate is **AWS-side org provisioning**, not license. NOTE: the bare classic `CallCenter` sObject IS Data-API createable (`POST /sobjects/CallCenter` → 201) but that's an empty shell with no telephony wiring — not the wizard's deliverable. GOTCHA: `CallCenter` is metadata-backed — Data API creates it but only Metadata API `deleteMetadata` (type `CallCenter`) can delete it (`deletable=false` on Data/SOAP). → EXTERNAL-TD / customer AWS Connect provisioning.
55
- 3. `AssignContactCenter` `[data — ask which users; mechanism = User.CallCenterId PATCH; blocked in SCV context by step 2 gate]` — org link: `/lightning/setup/ServiceVoiceContactCenters/home`; help doc: https://sfdc.co/HomeHealthContactCenter. The classic assignment join is `User.CallCenterId` — `PATCH /sobjects/User/<id> {"CallCenterId":<CallCenter Id>}` → 204; read back to confirm, revert to null if this was just a mechanism check. The SCV-native path (`addUsersToContactCenter`) → 500 "…Salesforce Voice is turned on" against a real CallCenter Id (needs a truly SCV-provisioned center, i.e. step 2 must clear first); the native-CCaaS variant (the queue-backend user-assignment action) → 403 ACCESS_DENIED (wrong path). So the assignment MECHANISM is confirmed, but meaningful use is gated on step 2. WHICH users = ask.
56
- 4. `AssignHomeHealthTopic` `[automate — run INDEPENDENTLY, immediately after Step 0; build the agent + its subagent end-to-end without an [ask] gate]` — org link: `/lightning/setup/EinsteinCopilot/home`; help doc: https://sfdc.co/HomeHealthAgentTopics.
57
-
58
- 🚨 **DATA CLOUD IS NOT REQUIRED TO CREATE THE AGENT. Building + publishing + activating the Home Health agent and its subagent does NOT depend on Data Cloud in any way.** Proven on an org that has **no Data Cloud provisioned at all** — the agent (`Home_Health_Agent`) built, published, and reached `BotVersion.Status:Active` with the `PatientHomeHealthcareMgmt` subagent + router bound to the active planner. **The ONLY thing Data Cloud gates is step 5 (grounding the agent on a data *library*)** — on an org without Data Cloud, `knowledge.rag_feature_config_id` simply stays empty and `AnswerQuestionsWithKnowledge` has no library to retrieve from; the agent itself is fully built and active. An empty `rag_feature_config_id` is the CORRECT end state on a non-Data-Cloud org, **not** a build failure. Do NOT defer or block Step 4 on Data Cloud (nor on SCV, the Bot-legal-terms gate, or the `industries_hls_einstein` package — none are required).
59
-
60
- **EXECUTION RULE: once Step 0's three required platform toggles (#1, #3, #4 — NOT `enableBots`) are on, build the Home Health agent (`Home_Health_Agent`) with its subagent automatically — do NOT block on an `[ask]` for whether to build, and do NOT wait on `enableBots` (it's optional; see Step 0). Default to creating a fresh HH agent; only OPTIONALLY confirm a non-default agent name/label. This step is independent of steps 1–3 (SCV/contact-center), independent of the Bot Settings legal-terms gate, and independent of Data Cloud provisioning (that gates only step 5's library grounding).** A **shipped HH agent template exists**: the agent-templates listing action returns `HH Next Scheduler` (`industries_hls_einstein__HHNextScheduler`, full agentScript with HH topics HHSchedulerOrchestrator/ManualExecution/SOCExecution/AutoRecurringExecution). The topic-assignment mechanism (the local/agent-topics create actions) is real and callable but needs a target `agentVersionId`. GOTCHAS: legacy `createCopilotFromTemplate` → 500 "template not found" (it's the old Copilot model; the Next-Gen agent-authoring surface has no create-from-template method exposed — only `createBundleWithVersion`/`createDraftBundleVersion` taking a full bundle input). A fresh org typically has no pre-seeded HH agent to target — build a new one rather than assuming an existing HH agent exists. **Agent identity (optional confirm only — do NOT gate the build on it):** default to a fresh agent named `Home_Health_Agent`; if the customer names an existing agent to attach the HH topics to instead, use that. Do not invent a different agent identity, but do not wait on this answer to proceed with the default.
61
-
62
- **Building an agent WITH the HH subagent from scratch — end-to-end automatable, and CONFIRMED to NOT require Data Cloud provisioning or the `industries_hls_einstein` package.** (Expected end state on an org without those two: agent `Home_Health_Agent`, BotVersion `Status:Active`, the subagent `PatientHomeHealthcareMgmt` present + active.) The earlier "Data-Cloud-provisioned org" caveat on this step applies ONLY to the separate data-library-grounding step below (step 5) — **the agent-plus-subagent build/publish/activate path itself has NO Data Cloud dependency whatsoever; never block, defer, or mark this step manual on Data Cloud status.**
63
-
64
- ✅ **THE PUBLISH GATE IS THE AGENT *TYPE*, NOT `enableBots` (holds end-to-end with `enableBots=false`).** An Agentforce agent's root record is a `BotDefinition`, but its **`Type`** depends on the `.agent` `config.agent_type`. Build it as an **Employee agent** and it publishes + activates freely with Bots off:
65
- ```text
66
- config:
67
- agent_label: "Home Health Agent"
68
- agent_template: "EmployeeCopilot__AgentforceEmployeeAgent"
69
- developer_name: "Home_Health_Agent_Emp"
70
- agent_type: "AgentforceEmployeeAgent"
71
- model_config:
72
- model: "model://sfdc_ai__DefaultGPT54"
73
- ```
74
- → produces a `BotDefinition` with `Type=InternalCopilot`, which is **not** legal-terms-gated. **If you OMIT `agent_type`, or leave a `messages:` (welcome/error) block or `@MessagingSession.*` linked variables in the blueprint, it compiles to an `EinsteinServiceAgent`** (patient-facing Messaging/voice agent) — and *that* type is what (a) validation-errors `INVALID_API_INPUT "Default agent user is required for the agent type EinsteinServiceAgent"` and (b) requires `enableBots=true` + the one-time Einstein Bots legal-terms acceptance because it binds to the Messaging channel. So: for the default HH agent build, use the Employee `agent_type` above and DROP the `messages:` block and all messaging linked vars (the voice-call subagent `PatientHomeHlthcrMgmtVoiceCall` is out of scope and is never built) — then publish/activate need no Bot legal terms. Only build the `EinsteinServiceAgent` variant (and accept the legal-terms hand-off) if a patient-facing Messaging/voice channel agent is explicitly wanted.
75
-
76
- **Recipe — create bundle → assemble afscript → patch draft → publish → activate:**
77
- 1. `POST /nextgen-authoring/bundles` with a flat body `{"label":"Home Health Agent","apiName":"Home_Health_Agent"}` → 201, returning `{bundleId, id:<draftVersionId>, apiName:"Home_Health_Agent_1", versionStatus:"DRAFT", ...}` (server auto-suffixes `apiName` on collision — don't pass `agentTemplate`, it 400s `JSON_PARSER_ERROR "Unrecognized field"`).
78
- 2. Assemble the afscript = a base Employee-agent afscript (e.g. pull one via `GET /nextgen-authoring/bundle-versions/<id>` off any existing Employee-agent bundle/draft) + the 2 subagent blocks (`topicAFScript` + each subagent's `actions:` block — the full `PatientHomeHealthcareMgmt` subagent YAML, including their `AnswerQuestionsWithKnowledge`/`IdentifyRecordByName`/`QueryRecords`/`GetRecordDetails`/`SummarizePatientHomeHlthcrDtl` actions) + a `go_to_PatientHomeHealthcareMgmt` router transition added to `agent_router.reasoning.actions` alongside the existing `go_to_ambiguous_question` anchor.
79
- 3. `PATCH /nextgen-authoring/bundle-versions/{draftId}` with body `{"assets":[{"resourceName":"definition.agent","resourceType":"agentDefinition","resourceContent":"<full afscript string>"}]}` → 204. Read back with a fresh GET to confirm the content persisted (it's a real overwrite, not a merge). ✅ **`resourceContent` can be the raw `.agent` DSL string verbatim** (the same file `sf agent validate` compiles) — no separate "afscript" transpile step is required for the PATCH; the server accepts the `.agent` content under `resourceType:agentDefinition`, and the read-back returns the full asset. Create (201) + PATCH (204) + read-back all succeed with **only the session access token** — no OAuth refresh, no external gateway.
80
- 4. `POST /nextgen-authoring/bundle-versions/{draftId}/publish` → 201 `{publishedBotId, publishedBotVersionId}`.
81
- 5. `POST /nextgen-authoring/bundle-versions/{draftId}/activate` → 204.
82
- 6. Verify independently: fresh `GET /nextgen-authoring/bundle-versions/{draftId}` → `versionStatus:"PUBLISHED"`, `targetStatus:"ACTIVE"`; fresh Data-API query `SELECT Status FROM BotVersion WHERE Id='<publishedBotVersionId>'` → `Status:"Active"`.
83
-
84
- ⚠️ **A PUBLISH-TIME `INSUFFICIENT_ACCESS` OR `EinsteinServiceAgent` VALIDATION ERROR ALMOST ALWAYS MEANS THE BLUEPRINT COMPILED TO A *SERVICE* AGENT — FIX THE `agent_type`, DON'T CHASE `enableBots`/permsets/entitlement.** Two symptoms, one cause: (a) `publish` → `[{"errorCode":"INVALID_API_INPUT","message":"…Default agent user is required for the agent type EinsteinServiceAgent"}]`, or (b) an older run's `[{"errorCode":"INSUFFICIENT_ACCESS","message":"…User doesn't have access to agent."}]`. Both come from a blueprint that carries a `messages:` (welcome/error) block, `@MessagingSession.*`/`@MessagingEndUser.*` linked variables, or an omitted `agent_type` → the server classifies it as an `EinsteinServiceAgent` (Messaging channel), which needs `enableBots=true` + the Einstein Bots legal terms. **The fix is NOT to enable Bots — it's to rebuild the draft as an Employee agent** (add `config.agent_type: "AgentforceEmployeeAgent"` + `agent_template: "EmployeeCopilot__AgentforceEmployeeAgent"` + a `model_config`, and strip the `messages:` block / voice subagent / messaging linked vars — see the config snippet above). Re-PATCH the same draft and re-publish: it lands a `Type=InternalCopilot` `BotDefinition` and activates with `enableBots=false`. Assigning more permsets does nothing (proven: an org with `CopilotSalesforceAdmin` + `CopilotSalesforceUser` + `EinsteinGPTCopilotPsl` still failed while the blueprint was a service agent). Only if a patient-facing **Messaging/voice** agent is explicitly wanted do you actually need `enableBots=true` — see the legal-terms hand-off note below.
85
-
86
- 📋 **ONLY IF THE `EinsteinServiceAgent` (Messaging/voice) VARIANT IS EXPLICITLY REQUIRED — hand off the one-time legal-terms click, then resume automatically.** Deploying `BotSettings.enableBots=true` fails `Error: Bot — "Legal Terms acceptance and/or necessary feature dependencies required to enable Bot Settings"`, and on an org where the headless proxy is unwired there is NO API/MDAPI/Setup-Discovery lever (all three confirmed dead: controller `NOT_IMPLEMENTED`, no `einstein-bots` discovery feature, MDAPI deploy is itself the gated action). The executor must NOT auto-accept it — it's a personal "I'm authorized by my company to accept these terms" attestation — and must not drive it via a scripted browser session. Prompt text to use:
87
- > *"You've asked for a patient-facing Messaging/voice agent, which runs on Einstein Bots. Turning Bots on requires a one-time legal-terms acceptance that only you can make. In Setup, open **Einstein Bots** (`/lightning/setup/EinsteinBots/home`), check **‘I'm authorized by my company to accept these terms’**, and click **‘Try Einstein’**. Tell me once done and I'll finish automatically — enabling Bots and publishing + activating the Messaging agent (already staged). (The Employee-facing Home Health agent is already built and needs none of this.)"*
88
-
89
- After acceptance: deploy `BotSettings.enableBots=true` (now succeeds), then publish + activate the service-agent draft via the REST chain. **This is an OPTIONAL variant, not the default HH agent path** — the Employee agent is built with zero human action. **This org-side gate is a different failure from the external-gateway 404 below** — reaching a publish/validation response at all is proof the correct org-domain REST mechanism was used.
90
-
91
- ⚠️ **ENDPOINT PATH — the resource is `/services/data/vXX.0/nextgen-authoring/bundles`, with NO `/connect` prefix.** `POST /services/data/vXX.0/connect/nextgen-authoring/bundles` → `NOT_FOUND` (this is a common false-negative that reads like "capability absent" — it's just the wrong path). The correct flat-body POST returns 201 with the auto-suffixed `apiName` (`Home_Health_Agent` → `Home_Health_Agent_1`). Do NOT treat one `NOT_FOUND` on the `/connect`-prefixed path as a dead end — that mistake once caused this whole step to be wrongly deferred to manual.
92
-
93
- 🚨 **MECHANISM CHOICE — prefer the org-domain REST recipe above; the `sf agent` CLI publish routes through an EXTERNAL gateway that 404s on orgs not registered on it (typically scratch / pre-release / internal dev orgs).** `sf agent publish authoring-bundle` bootstraps a JWT and POSTs the compiled bundle to the **external Agentforce SFAP gateway** (`api.salesforce.com/einstein/ai-agent/authoring`, with `test.api.`/`dev.api.` fallbacks). On an org not registered on that public gateway, all three hosts return **404 `AgentApiNotFound`** and **nothing is written to the org** (`BotDefinition` count stays 0) — a failure that looks like "the agent couldn't be created" but is really just the wrong endpoint. The `sf agent validate` step is safe (local compile), but for the actual org write **drive the REST recipe above** (`POST /nextgen-authoring/bundles` → `PATCH …/bundle-versions/{id}` with the `.agent` content → `publish` → `activate`), which stays on the org's own My Domain and works with the session token. Reserve the CLI publish for orgs known to be registered on the SFAP gateway. **Do not conclude "agent build failed" from a `sf agent publish` 404 without first trying the org-domain REST path.**
94
-
95
- **CLI convenience path (only on gateway-registered orgs) — drive the same nextgen-authoring surface via the `sf agent` CLI instead of hand-rolling the REST PATCH/publish/activate.** The CLI transpiles the `.agent` DSL (the sf-skills authoring format), assembles the afscript, and calls the identical nextgen-authoring endpoints — but handles the afscript resource-envelope shape for you (a raw REST `PATCH …/bundle-versions/{id}` with the wrong `resourceType`/`content` field silently fails or `UNKNOWN_EXCEPTION`s). Steps:
96
- 1. `sf org login access-token --instance-url <url> --alias <alias>` (feed the org access token on stdin) → the token-only login this whole runbook uses.
97
- 2. Scaffold a Metadata API project with an `aiAuthoringBundles/Home_Health_Agent/` dir holding `Home_Health_Agent.agent` (the afscript — base a knowledge-grounded Employee agent off the sf-skills `agentforce-generate/assets/agents/knowledge-grounded.agent` template; add the router + the `PatientHomeHealthcareMgmt` subagent block, on the `AnswerQuestionsWithKnowledge` RAG path with the prompt action dropped per the platform-defect workaround below) and `Home_Health_Agent.bundle-meta.xml` (`<masterLabel>` + `<bundleType>Agent</bundleType>`). For an Employee agent use `agent_type: "AgentforceEmployeeAgent"` and OMIT the `access:`/messaging linked-variable blocks (gotcha (i)).
98
- 3. `sf agent validate authoring-bundle --api-name Home_Health_Agent` → `{success:true}`. This is the fast pre-flight — the afscript compiles here before any org write.
99
- 4. `sf agent publish authoring-bundle --api-name Home_Health_Agent` → **creates the BotDefinition + GenAiPlannerDefinition + both GenAiPluginDefinitions (router + the subagent) on the org.** ⚠️ **KNOWN COSMETIC ERROR:** this command's *final* metadata step can throw `MetadataTransferError: Required field is missing: bundleType` even though the bundleType is set in the meta — but by then the agent, planner, and all topic/subagent definitions are ALREADY created (verify via `SELECT Id,DeveloperName,Type FROM BotDefinition WHERE DeveloperName='Home_Health_Agent'` + `SELECT DeveloperName,MasterLabel FROM GenAiPluginDefinition`). Do NOT treat this error as a build failure; proceed to activate.
100
- 5. `sf agent activate --api-name Home_Health_Agent` → `{success:true, version:N}`; the latest `BotVersion` flips to `Status:Active`. This finishes what the publish-step's cosmetic error left dangling.
101
- 6. Verify: `SELECT Id,DeveloperName,Status,VersionNumber FROM BotVersion WHERE BotDefinitionId=<def>` → the newest version `Active`; `SELECT Plugin FROM GenAiPlannerFunctionDef WHERE PlannerId=<active planner>` → 2 rows; the 2 `GenAiPluginDefinition`s (`PluginType:Topic`) are `agent_router` + `PatientHomeHealthcareMgmt`. The subagent renders under **Topics** on the agent's **Active** version in Agent Builder.
102
-
103
- ⚠️ **UI-MASKING GOTCHA — a leftover EMPTY nextgen-authoring draft bundle sharing the agent's `apiName` masks the real active agent's subagent in Agent Builder.** If you (or a prior probe) created a bare `POST /nextgen-authoring/bundles` draft that was never PATCHed/published, Agent Builder can resolve the agent-by-name to that empty shell (no afscript, `publishedBotId:null`) and show **zero subagents** — even though the real active BotVersion's planner has both topics bound. **Fix:** list bundles (`GET /nextgen-authoring/bundles`), find the empty duplicate (`activeBundleVersionId:null` AND `publishedBotId:null` with an empty `latestBundleVersion`), and `DELETE /services/data/vXX.0/nextgen-authoring/bundles/<id>` → 204. Then hard-refresh Agent Builder and open the **Active** version. (When the CLI publish path is used, no such empty draft is created — this gotcha is specific to a hand-rolled REST `POST /bundles` that didn't complete.)
104
-
105
- **Portability gotchas (all fatal on publish/persist if missed):** (i) if the base afscript was authored as a *messaging* agent it carries 5 `@MessagingSession.*` / `@MessagingEndUser.*` linked variables (`EndUserId`, `RoutableId`, `ContactId`, `EndUserLanguage`, `ChannelType`) → publish 400 `INVALID_API_INPUT "The Messaging Session is not a valid entity"`; **strip those 5 linked variables** for an Employee/Copilot agent. (ii) `developer_name` collisions → publish 400 `DUPLICATE_VALUE "BotDefinition duplicates value"`; use a fresh `developer_name` (a failed publish can leave a half-BotDefinition behind, so bump the name on retry). Server auto-suffixes the bundle `apiName` (e.g. `Home_Health_Agent` → `Home_Health_Agent_1`). (iii) **If dropping the prompt action (see limitation below), don't just delete its action binding — rewrite the subagent's `reasoning.instructions` prose too.** The subagent's shipped instructions are a step-by-step script that explicitly says "call the SummarizePatientHomeHlthcrDtl action"; leaving that prose in after removing the action definitions gives the agent instructions it can't execute. Replace those steps with an instruction to answer via `AnswerQuestionsWithKnowledge` (RAG/knowledge-article grounding) instead, and note the summarization/extraction capability is pending the platform fix below.
106
-
107
- ⚠️ **CONFIRMED PLATFORM LIMITATION — prompt-action subagents cannot be published headlessly (a filed platform defect, `-306402626`).** The HH subagent contains a `generatePromptResponse://` PROMPT action (`industries_hls_einstein__summarizePatientHomeHealthcareDetails`). Enabling Einstein for Health Cloud (step 1) **does provision that prompt template** (`TEMPLATE_NOT_FOUND` → `200 Published`), and the afscript **compiles cleanly** (`POST /nextgen-authoring/afscript/compile` v65.0 → 200), BUT **publishing any bundle version containing a `generatePromptResponse://` action returns 500 `UNKNOWN_EXCEPTION` (platform defect `-306402626`)** — this has been reproduced across independent orgs with Data Cloud + templates + full admin access, which rules out permissions/provisioning. This is a **platform-side publish-persistence bug**, filed as a gap. On an org where `industries_hls_einstein` isn't installed at all, the same action is moot regardless — the prompt templates they target don't exist to provision. **Workaround (what actually ships, and is confirmed clean on both an HLS-Einstein-installed org and a non-installed org):** publish the subagent with the PROMPT action dropped (per gotcha (iii) above) — the knowledge/RAG path (`AnswerQuestionsWithKnowledge` + `IdentifyRecordByName`/`QueryRecords`/`GetRecordDetails`) publishes + activates cleanly and carries the data-library grounding; re-add the prompt action via the Agent Builder UI once the platform bug is fixed (and, on a non-HLS-Einstein org, once that package is installed), or hand off that action manually. Everything else in the agent (the topic, router, knowledge grounding, library attach) is fully headless.
108
- 5. `DataCloudLibraryAssignAgent` `[Data-Cloud-GATED — run ONLY if the data library is wanted; check enablement first, then branch: prompt-if-disabled / ask-in-interaction-mode-if-enabled]` — org link: `/lightning/setup/EinsteinCopilot/home`; help doc: https://sfdc.co/HomeHealthDataLibrary.
109
-
110
- 🚦 **DATA CLOUD IS REQUIRED ONLY FOR THIS STEP (setting up the data library). Nothing else in Phase 13 needs it.** Do this step ONLY after steps 0/1 (enablement), the default agent (Step 0 toggles #3/#4), and Step 4 (HH agent + its subagent) are done. **First check Data Cloud enablement**, then branch:
111
-
112
- - **CHECK:** probe provisioning — the data-library prerequisites check (→ `true`/`false`) and the Data-Cloud-enabled check, both over `/headless/invoke`. On an UNprovisioned org four calls converge: the prerequisites check→false; `listDataLibraries()`→**501**; the Data-Cloud-enabled check→false; `getAllDataspaces()`→**500**.
113
- - **IF DATA CLOUD IS NOT ENABLED →** do NOT silently skip the whole phase and do NOT block the run. **Prompt the user** that Data Cloud must be enabled/provisioned first in order to set up the data library, and that until then the HH agent runs without library grounding (empty `rag_feature_config_id`, which is the correct non-Data-Cloud end state — the agent from Step 4 is already fully active). Then **continue to the next phase, or to any other pending steps in this phase (steps 6/7)** — leave the library for a later run once Data Cloud is provisioned.
114
- - **IF DATA CLOUD IS ENABLED →** proceed with the create→attach flow below, but **ask the user in interaction mode how to set up the data library** first: whether to create a new library or attach an existing one, the library name/source, and **which library grounds which agent**. Do not fabricate the library or its grounding target. Only after the user answers, run the mechanism below.
115
-
116
- **PROVISIONING NOTE:** on a Data-Cloud-provisioned org the attach can be exercised end-to-end. **Two paths, both via `AiDataLibraryController` (FQN `AiDataLibraryController`) over `/headless/invoke`:**
117
- - **(a) Direct feature-attach.** `assignLibrary` `params_schema:[{"name":"featureName","type":"String"},{"name":"aiRagFeaturePromptContentDevName","type":"String"},{"name":"groundingLibraryId","type":"String"}]`. `featureName` is an `AIGroundingFeatureConfigEnum` — for an Agentforce agent use `COPILOT` (values: SERVICE_REPLIES, EINSTEIN_BOTS, COPILOT, SERVICE_REPLIES_FOR_EMAIL, ARTICLE_RECOMMENDATIONS_FOR_CONVERSATION/_FOR_CASE, EINSTEIN_KNOWLEDGE_CREATION; COPILOT + EINSTEIN_BOTS are multi-instance). ⚠️ **GOTCHA:** passing a planner Id or empty string as `aiRagFeaturePromptContentDevName` → "Could not find AiRagFeaturePromptContent record with devName or Id". FIX: pass the devName in the form **`ARFPC_<groundingLibraryId>`** — the `NGA_DATA_LIBRARY_ID_PREFIX = "ARFPC_"` triggers the create-branch in the library-assignment service, which mints the ARFPC junction record → 200. Read back to resolve the junction to the real library.
118
- - **(b) Production planner-bound path (attach-at-publish).** The way the product actually binds a library to a specific agent version: set `knowledge.rag_feature_config_id = "ARFPC_<groundingLibraryId>"` in the agent's afscript (the base afscript ships `knowledge: { rag_feature_config_id: "" }`, wired into the `AnswerQuestionsWithKnowledge` action as `"ragFeatureConfigId"` bound to the `knowledge.rag_feature_config_id` afscript variable), then publish the bundle version. At publish the platform reads that value and attaches the library to the agent's planner, stamping the planner as Parent. This publishes cleanly when the base afscript sets `rag_feature_config_id: "ARFPC_<libId>"`.
119
- - **(c) CREATE a data library headlessly.** `POST /einstein/data-libraries` (**v66.0, connect=False**) body `{"masterLabel":"…","developerName":"…","description":"…","fileAdlMode":3,"groundingSource":{"sourceType":"SFDRIVE","groundingFileRefs":[]}}` → 201 returning `{libraryId, status:"IN_PROGRESS", groundingSource:{indexMode:"BASIC"}}`. ⚠️ **Two create gotchas:** (i) `groundingSource` is a polymorphic input — the discriminator key is **`sourceType`** with value **`SFDRIVE`** (NOT `groundingSourceType`, and NOT `SalesforceDrive`); omitting it → 400 `JSON_PARSER_ERROR "missing property 'sourceType'"`, wrong value → 400 "Could not resolve type id". (ii) **Do NOT pass `dataSpaceScopeId`** — supplying any non-default dataspace id (even another existing library's) → 400 `INVALID_REQUEST_STATE "Non-default dataspace is not supported. Only the default dataspace is allowed."`; **omit the field** and the server defaults it. Then attach with path (a). Expected result of the full create→attach chain: a new library gets created → `assignLibrary(COPILOT, ARFPC_<libraryId>, <libId>)` → 200 junction.
120
- - ⚠️ **Indexing-stall caveat (external, no headless lever):** the data library's async indexing pipeline (stages DATA_LAKE_OBJECT → DATA_MODEL_OBJECT → SEARCH_INDEX → INDEXING → RETRIEVER; poll `GET /einstein/data-libraries/{id}/status` v66.0) starts at `status: IN_PROGRESS` on create and can stall at `SEARCH_INDEX` for well over an hour (RETRIEVER never activating) — so the *library's queryability* (and thus retrieval-time read-back of the planner binding) may not be confirmable even though the create + attach *writes* succeed (201/200). This is a backend job, not an automation gap. Ask the customer **which data library grounds which agent** before attaching.
121
- - **Provisioning is org-specific, NOT a permission issue:** on a fully-provisioned reference org the data-library prerequisites check → `true` and a real library may pre-exist, so create+attach runs clean; on an org without Data Cloud provisioned, the same calls return false/501/500. Same token-only headless calls — the difference is org provisioning, so branch on the prerequisites check and fail-silently when false.
122
- 6. `VoiceCallPageLayout` `[automate — classic Layout Tooling PATCH]` — help doc: https://sfdc.co/HomeHealthVoiceCallPage. Reclassified from `[manual]`. `VoiceCall` is `layoutable=true`; the layout is a classic `Layout` (NOT FlexiPage — same pattern as Group 9 quick actions). Query `Layout WHERE TableEnumOrId='VoiceCall'` to find it (typically named "VoiceCall-Voice Call Layout"). `PATCH /tooling/sobjects/Layout/<id> {"Metadata":<full blob>,"FullName":"VoiceCall-Voice Call Layout"}` → 204; read back to confirm the flipped property, revert to original if this was just a mechanism check. ⚠️ GOTCHA: the PATCH body must contain ONLY `Metadata` + `FullName` — any other top-level field (even mirroring a real column) → 400 `FIELD_INTEGRITY_EXCEPTION`.
123
- 7. `SetupAgentEntityAccess` `[automate-the-mechanism / ask-the-permset+entities]` — org link: `/lightning/setup/PermSets/home`; help doc: https://sfdc.co/HomeHealthCareCoordinatorPermission. `PermissionSet` create + `ObjectPermissions`/`FieldPermissions` create via **Data API** (not Tooling) works for standard HH entities (create a probe permset → 201, grant `Case` + `CareRequest` object perms → 201, read back, clean up → 204 if it was just a mechanism check). ⚠️ **VoiceCall is EXCLUDED from the `ObjectPermissions/FieldPermissions.SobjectType` restricted picklist** — `POST /sobjects/ObjectPermissions {SobjectType:"VoiceCall"}` → 400 `INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST` (not inferable from describe alone); VoiceCall access is controlled purely by Voice licenses/PSLs, not object CRUD. GOTCHA: dependency chains — `CareRequest` perm needs `Case` read first, `Account` needs `Contact` first (else `FIELD_INTEGRITY_EXCEPTION`). No shipped HH permset covers Voice/Agentforce entities (check `ManageHomeHealthPsl`, `ContactCenterAgentforHealthCloud`, all `HcHomeHealth*`) — a new permset must be authored. Which permset/entities/users = **ask**.
124
-
125
- ## Return contract (for callers delegating to this skill)
126
-
127
- Report back a per-step ledger (Step 0, 1, 2, 3, 4, 5, 6, 7 → done / automated-done / blocked-org-provisioning / deferred-data-cloud-not-enabled / awaiting-data) and a single `phase_complete` boolean. `phase_complete: true` requires Step 0, 1, and 4 (platform enablement + the HH agent build) to be terminal — those are the only hard requirements. Steps 2/3 (SCV contact center) terminally report `blocked-org-provisioning` rather than ever converting to `done` on orgs without AWS Connect provisioning — don't hold the phase open on them. Step 5 (data library) terminally reports `deferred-data-cloud-not-enabled` on a non-Data-Cloud org (not a blocker) or `awaiting-data` once Data Cloud is enabled but the admin hasn't yet answered which library grounds which agent. Steps 6/7 are independent automatable mechanisms gated only on `[ask]` for layout content / permset+entities respectively.
128
-
129
- ## Companion references
130
-
131
- - `health-cloud-revan/home-health-guided-setup` — the root orchestrator (full 16-group Home Health wizard) that delegates to this skill.
@@ -1,50 +0,0 @@
1
- ---
2
- name: industries-home-health-bundling-policy-create
3
- description: "Create a Home Health appointment bundling policy (`ApptBundlePolicy`) via direct REST create, going further than the wizard's own navigation-only button, with real business rules confirmed before writing. Triggers on \"create Home Health bundling policy\", or as a delegation target from `home-health-guided-setup-get-org-ready` (Phase 2f)."
4
- metadata:
5
- version: "1.0"
6
- ---
7
-
8
- # Home Health — Create Bundling Policy
9
-
10
- Child skill extracted from `home-health-guided-setup` Phase 2f (`[data for real business rules — but the wizard button itself is pure navigation, not automation]`).
11
-
12
- Public doc (literal URL, confirmed via Custom Label): `https://sfdc.co/HomeHealthBundlePolicy`.
13
-
14
- **No wizard-native executor exists for this step.** Unlike `home-health-create-work-order-record-type` / `home-health-create-scheduling-policy`, the wizard step is a plain navigation button to `/lightning/o/ApptBundlePolicy/home` — none of the wizard's automated setup actions (label get/update, scheduling policy, work-order/budget record types, reschedule-flow toggle, permission validation) touch `ApptBundlePolicy`. The wizard's own button truly does nothing but open the object's list view; the admin creates the record by hand in that UI.
15
-
16
- That said, the underlying `ApptBundlePolicy` object is directly REST-creatable — `createAccess="always"`, gated only by Field Service being enabled (i.e. requires `home-health-install-fsl-package` to have run first). So this skill CAN offer to create it via `POST /sobjects/ApptBundlePolicy`, going further than the wizard's own button, as long as the real business rules are confirmed first. Real field values, with the platform's own defaults surfaced (per the show-defaults-then-create pattern):
17
-
18
- | Field | Platform default | Nature |
19
- |---|---|---|
20
- | `Name` | none — required, unique | **ask** |
21
- | `Priority` | none — required, unique, must be positive | **ask** |
22
- | `IsManualBundling` | none (never required) | ask if relevant |
23
- | `IsAutomaticBundling` | `false` | present as default, let admin override |
24
- | `LimitAmountOfBundleMembers` | `50` (valid range 2–200, server-enforced) | present as default, let admin override |
25
- | `LimitDurationOfBundle` | none (non-negative if set) | ask |
26
- | `BundleStartTimeFieldName` / `BundleEndTimeFieldName` | none — enum of `ServiceAppointment` datetime fields (e.g. `ServiceAppointment.SchedStartTime` / `SchedEndTime`) | ask, offer the enum's real options via Describe |
27
- | `IsTimeCalcByBundleDurationFld` | has an insert default, never required in UI | present as default |
28
- | `ConstantTimeValue` | none (non-negative if set) | ask, only relevant if not calculating from the duration field |
29
- | `FilterCriteria` | none — FK to a `RecordsetFilterCriteria` | ask if the admin wants filtered bundling |
30
- | `CanAllowSchleDepndInBundle` | `false` | present as default, let admin override |
31
-
32
- Present this table to the admin as: "here are Salesforce's platform defaults for the fields that have one — want to keep them, or change any? Name and Priority are required and I need your real values for those either way." Only call the create once the admin has confirmed or overridden. Never invent `Name`/`Priority` or the start/end-time field choice — those are real business decisions with no platform default.
33
-
34
- **Public-doc content note**: the article at `https://sfdc.co/HomeHealthBundlePolicy` could not be independently read for this skill (Salesforce Help returned a loading-error page on fetch, both directly and via the resolved short-link) — the field-level detail above comes from the `ApptBundlePolicy` object definition and its validation rules, not from the article's own text. Still surface the link to the admin — just don't claim the article's content was verified.
35
-
36
- ## Show-defaults-then-create pattern
37
-
38
- Whenever a step has fixed platform default values AND real customer-specific fields in the same create, don't silently pick one path. Discover what the admin has already said this session, present the platform defaults for the rest explicitly, and let the admin confirm or override before the write happens — never create first and explain after. (`home-health-create-scheduling-policy` uses the same pattern.)
39
-
40
- ## Return contract (for callers delegating to this skill)
41
-
42
- Report back the policy record's Id and the final field values used, or `blocked: FSL not installed` if the prerequisite isn't met.
43
-
44
- ## Companion references
45
-
46
- - `health-cloud-revan/home-health-create-scheduling-policy` — Phase 2e leaf — scheduling policy.
47
- - `health-cloud-revan/home-health-create-work-order-record-type` — Phase 2d leaf — Work Order record type.
48
- - `health-cloud-revan/home-health-guided-setup-get-org-ready` — Phase 2 orchestrator (sub-steps 2a-2f).
49
- - `health-cloud-revan/home-health-guided-setup` — the root orchestrator (full 16-group Home Health wizard) that delegates to this skill.
50
- - `health-cloud-revan/home-health-install-fsl-package` — leaf — FSL managed-package install (Tooling API → Setup Discovery recipe → Salesforce Go).
@@ -1,29 +0,0 @@
1
- ---
2
- name: industries-home-health-entity-labels-configure
3
- description: "Surface entity-rename label suggestions for Home Health's renamable entities and hand off the actual rename write to the admin (no CRUD endpoint exists for it). Triggers on \"rename Home Health labels\", \"update entity labels\", or as a delegation target from `home-health-guided-setup-get-org-ready` (Phase 2c)."
4
- metadata:
5
- version: "1.0"
6
- ---
7
-
8
- # Home Health — Update Entity Labels
9
-
10
- Child skill extracted from `home-health-guided-setup` Phase 2c (`[metadata to show, data to decide, manual to write]`).
11
-
12
- Wizard step `UpdateLabels` (`action.type: LaunchComponent`, resource `{"name": "healthcloud:renameEntities"}`). Help doc: https://sfdc.co/HomeHealthUpdateLabels.
13
-
14
- There is **no CRUD endpoint** for the actual rename write (`CustomObjectTranslation`/`GlobalValueSetTranslation`/`StandardValueSetTranslation`/`RecordTypeTranslation` are all 404 on Tooling Describe; the underlying mechanism is internal Java + PL/SQL with no external write surface). What IS automatable:
15
-
16
- 1. Read current labels live: `GET /sobjects/<Entity>/describe` → `label`/`labelPlural`, for each of the 13 Home-Health-renamable entities (ServiceAppointment, WorkOrder, WorkPlan, WorkStep, WorkType, ServiceResource, ServiceTerritory, OperatingHours, ResourcePreference, WorkPlanTemplate, ResourceAbsence, ServiceResourceSkill, PartyAppointmentRequest).
17
- 2. Show the admin a table: entity | current label (real, from Describe) | platform's suggested label (fixed reference, not invented).
18
- 3. Ask: keep current / adopt suggested / enter a custom name, per entity or in bulk.
19
- 4. Hand off to the UI for the actual write — this step is entirely **optional** (cosmetic only, no functional impact if skipped):
20
- > "This is optional and purely cosmetic — nothing else in this setup depends on it. I can't write the rename myself (no API surface exists for this; it's owned by the Globalization team's Rename Tabs mechanism), but here's exactly what to enter: `<org-instance-url>/lightning/setup/RenameTab/home` (works in any language) or the Home Health 'Update Labels' modal (English-only, faster). Let me know when you're done, or say skip."
21
-
22
- ## Return contract (for callers delegating to this skill)
23
-
24
- Report back which entities the admin chose to rename (and to what), or `skipped` if declined — this step never blocks downstream phases.
25
-
26
- ## Companion references
27
-
28
- - `health-cloud-revan/home-health-guided-setup-get-org-ready` — Phase 2 orchestrator (sub-steps 2a-2f).
29
- - `health-cloud-revan/home-health-guided-setup` — the root orchestrator (full 16-group Home Health wizard) that delegates to this skill.
@@ -1,71 +0,0 @@
1
- ---
2
- name: industries-home-health-fsl-package-deploy
3
- description: "Install the Field Service (FSL) managed package on a Health Cloud org — the hard prerequisite that gates Home Health's scheduling/optimization steps. Triggers on \"install Field Service package\", \"FSL package install\", \"is FSL installed\", or as a delegation target from `home-health-guided-setup-enable-org-fsl` (Phase 0 step 4 of the Home Health guided setup). Tries a direct Tooling API install first, falls back to a headless Setup Discovery recipe, and only then hands off to the admin via a resolved Salesforce Go link."
4
- metadata:
5
- version: "1.0"
6
- cliTools:
7
- - tool:
8
- - "sf"
9
- semver: ">=2.0.0"
10
- ---
11
-
12
- # Home Health — Install Field Service Managed Package
13
-
14
- Leaf skill extracted from `home-health-guided-setup` Phase 0 step 4 (the FSL package install), so it can be delegated to from any phase/skill that needs FSL present — not just re-derived inline each time. `home-health-guided-setup-enable-org-fsl` delegates to this skill rather than inlining the detect/install/poll/fallback logic.
15
-
16
- ## Guided hand-off contract (applies if every automated path below fails)
17
-
18
- Many steps in the Home Health family have no API (managed-package install being the canonical example) — these are **guided manual hand-offs**, not dead ends:
19
-
20
- 1. **Guide, don't just name it.** Present: (a) what it accomplishes and why it's needed, (b) the exact org-specific link, (c) numbered click-by-click instructions, (d) the public help-doc link.
21
- 2. **State what's blocked behind it.** Tell the caller which later steps can't complete until this lands, and which steps can keep running in parallel meanwhile.
22
- 3. **Wait for the "done" signal**, then **verify, don't trust** — re-run the detect query. If it still fails, say exactly what you looked for and found, and keep waiting.
23
- 4. **On verified success, resume automatically** — don't make the caller re-issue the ask.
24
-
25
- **Prerequisite polling.** After handing off manual instructions, re-check the prerequisite on each subsequent turn (treat any response during the wait as a possible "is it ready?"). When it flips to satisfied, announce it ("✅ Field Service package detected — resuming setup") and return control. Do not poll on a timer or fabricate a "still waiting" status.
26
-
27
- ## Install procedure
28
-
29
- **Field Service package install — try the direct package-install API first, then the manual Salesforce Go hand-off if it can't run on this org; ALWAYS surface this proactively.** (wizard step `InstallFieldServicePackage`, `action.type: Manual` in the wizard, but a direct API install path is now proven — see below.) This is a hard gate: run its detection early and, if unmet, attempt the direct API install then ASK the admin (with the resolved Salesforce Go link) only if it can't install on this org; do not assume they know to.
30
-
31
- - **Detect first (this is what tells you whether to act):** query installed packages via **Tooling API** — `GET /services/data/vXX/tooling/query?q=SELECT SubscriberPackage.Name, SubscriberPackage.NamespacePrefix FROM InstalledSubscriberPackage`. FSL present = a package with namespace `FSL` (or name containing "Field Service"). A quick corroborating check: `SELECT COUNT() FROM FSL__Scheduling_Policy__c` — a `400 sObject type 'FSL__…' is not supported` means the package is NOT installed. (Note: `InstalledSubscriberPackage` is a **Tooling** object — a Data-API `/query` against it 400s.)
32
-
33
- - **Tier orchestration — SEQUENTIAL, never parallel; `IN_PROGRESS` is NOT failure.** FSL install is a long process (commonly 20–30 min). Run the tiers strictly in order and stop at the first one that is accepted:
34
- 1. Try PRIMARY. If it reports `IN_PROGRESS` (request accepted, not yet done) → **STOP: do NOT also fire SECONDARY** (avoids a double install). Keep polling PRIMARY and return `in-progress` to the caller so it can use the wait productively (see Return contract).
35
- 2. Only if PRIMARY **errors explicitly** (`Package Not Found`, create 400, or `Status=ERROR`) → try SECONDARY. If SECONDARY is accepted (`201` and status `IN_PROGRESS`) → same: stop, keep polling, return `in-progress`.
36
- 3. Only if BOTH explicitly error → TERTIARY (Salesforce Go hand-off).
37
- - Status meanings: `IN_PROGRESS` = running, keep polling (even if it looks frozen); `SUCCESS`/`ENABLED` = candidate success, **confirm only via the `FSL` namespace in the detect query**; `ERROR`/`NOT_ENABLED` with the namespace still absent = that tier failed.
38
- - **Overall polling ceiling ≈ 45 min** from the first accepted install. If `FSL` is still absent after that, treat the in-flight tier as failed and move to the next tier / Salesforce Go. While a tier is `IN_PROGRESS`, poll opportunistically (callers re-check at safe points, see the parent's "while FSL installs" rule) — don't block foreground on it.
39
- - During the Salesforce Go manual hand-off keep polling the detect query too; the admin finishing the install flips the state to `installed` without needing a message.
40
-
41
- - **PRIMARY: install the FSL managed package directly via the Tooling API `PackageInstallRequest` — token-only, no browser, no admin interaction.** This is the same mechanism Salesforce's own managed-package install flow uses; it just needs a bearer token. Three sub-steps:
42
- - **(i) Resolve the latest compatible FSL version id** from the public Salesforce Sites endpoint (no auth): `GET https://d36000000z1fneac.my.salesforce-sites.com/PublicLatestFSL` → take `response.trim().substring(0,15)` (or the full trimmed body — the API accepts the 15- or 18-char id) → the `04t…` `SubscriberPackageVersion` id. This host is the **hardcoded production endpoint** (a fixed platform endpoint, not an org setting), not an org-specific value — it always publishes the current prod-GA FSL version. (The response is a bare `04t…` id; it rotates each FSL release, which is exactly why you fetch it at runtime rather than hardcoding one.)
43
- - **(ii) Confirm the org can resolve that version** before attempting the install: `GET /tooling/query?q=SELECT Id,Name,MajorVersion,MinorVersion FROM SubscriberPackageVersion WHERE Id='<04t>'`. A 200 with the record (its `Name` + version, e.g. a named seasonal release) = go; a **`Package Not Found`** error = this org's instance does not have that FSL version published/replicated (see the prod-versioning caveat below) → **skip straight to the headless recipe / manual fallback**, do not attempt the create (it will only 400).
44
- - **(iii) Create the install request** (Tooling REST, **omit** the internal `PackageInstallSource` field — it's a SOAP-only enum core sets internally and is not required over REST): `POST /services/data/vXX/tooling/sobjects/PackageInstallRequest` body `{"SubscriberPackageVersionKey":"<04t>","SecurityType":"Full","NameConflictResolution":"Block"}` → `{"id":"0Hf…","success":true}`. Then **poll** `GET /tooling/sobjects/PackageInstallRequest/<id>` reading `Status` (+ `Errors`): `IN_PROGRESS` → keep polling (~20–30 s cadence; FSL takes ~4–15 min), until `SUCCESS` or `ERROR`. On `SUCCESS`, **re-run the detect query** to confirm the `FSL` namespace now appears (authoritative signal — same rule as the recipe path). On `ERROR`, surface `Errors` and fall through.
45
- - ⚠️ **Prod-versioning caveat (this is the crux of why the API install "fails" on some orgs).** The `04t` from the endpoint is a **prod-GA** version id; it only resolves on instances where FSL is actually published (real **production / sandbox / test instances**). On a **scratch / pre-release** org, step (ii) returns `Package Not Found` and step (iii) 400s `INVALID_CROSS_REFERENCE_KEY "invalid cross reference id"` — **not a broken call, just an org where the version isn't available.** So the resolve-check in (ii) is the gate: if it fails, this path is unavailable on this org — fall through to the Salesforce Go manual hand-off, don't retry the create.
46
-
47
- - **SECONDARY (executed) — the headless Setup Discovery recipe.** When the direct `PackageInstallRequest` can't run on this org (step (ii) `Package Not Found`, or the create/poll errors), **attempt this recipe next — before falling back to the browser.** It installs the FSL managed package headlessly along with the other quickstart steps (org settings, perm sets, console app, profiles). It is environment-gated and does **not** always converge (it can run `IN_PROGRESS → NOT_ENABLED` without installing — see the ⚠️ warning below), which is exactly why it sits *second*, behind `PackageInstallRequest`, and why success is judged solely by the `FSL`-namespace detect query, never by a status flip. The executed order is **`PackageInstallRequest` (primary) → Setup Discovery recipe (secondary) → manual Salesforce Go (tertiary/final)**. Fire the recipe (`POST` → `201 {"success":true}`, status → `IN_PROGRESS`):
48
- - `POST /services/data/vXX/connect/setup/discovery/feature/field-service-initial-cloud-setup/enable` with body `{}` — triggers the `fieldServiceQuickstart` recipe (min-version 254). Requires View Setup + Customize Application (System Administrator covers it).
49
- - Poll `GET /services/data/vXX/connect/setup/discovery/feature/field-service-initial-cloud-setup/status` until `status` leaves `IN_PROGRESS`. `ENABLED` (and FSL now present via the detect query) = success; re-run the detect query to confirm the `FSL` namespace actually appears before treating it as done.
50
- - ⚠️ **Do NOT trust `status` alone — the ONLY authoritative success signal is the `FSL` namespace appearing in the package-detect query.** The recipe is **environment-gated**: on orgs where the FSL `04t` package version isn't available or Field Service isn't licensed, it returns to `NOT_ENABLED` **without** installing. **A clean/empty status body is NOT proof of success** — for example, on an org without Field Service licensing, the recipe can run `IN_PROGRESS → NOT_ENABLED` and leave a *completely clean* status body (`enableBlockedReasons: []`, `dependencyStatuses: []`, `blockedByApexLock: false`) yet installed **no** package; `enableBlockedReasons`/`dependencyStatuses` sometimes surface why (e.g. `ANOTHER_FEATURE_RUNNING` if a prior run is still in flight — re-fire once it clears), but often they're empty even on a no-op.
51
- - ⏱️ **Convergence takes real time — a frozen `IN_PROGRESS` is NOT itself failure.** Confirmed on a live orgfarm/pc-rnd test instance: the recipe can sit at `IN_PROGRESS` with `lastStatusUpdate` apparently frozen for **20–30 minutes** before either converging (namespace appears) or genuinely going `NOT_ENABLED`. **Do not conclude "headless path unavailable" before at least 20–30 minutes have elapsed since the fire.** Poll on a ~1–2 min cadence (don't busy-loop) and keep polling through that window — a few minutes of apparent staleness is normal, not a signal. Only once 20–30 min have passed with the `FSL` namespace still absent (whether `status` reads `IN_PROGRESS` or has flipped to `NOT_ENABLED`) should you treat it as "headless path unavailable on this org" and fall through to the manual hand-off. If other non-FSL-dependent setup work is available, keep making progress on that in parallel rather than blocking the whole session on this wait — do not loop indefinitely once the window has elapsed, and never report success on a `status` flip or an empty status body alone.
52
-
53
- - **TERTIARY / FINAL FALLBACK (executed only after BOTH API paths above have failed): the manual Salesforce Go hand-off.** If the direct `PackageInstallRequest` can't run on this org (step (ii) `Package Not Found`, or the create/poll errors) **AND** the Setup Discovery recipe also fails to converge (still no `FSL` namespace **after waiting out the full 20–30 min convergence window** per the ⏱️ note above — don't fall back early just because `status` looks stuck), **hand the admin the org-specific Salesforce Go link and wait** (say this, don't wait to be asked). Both API paths (primary + secondary) are gated on the org's instance having the FSL version published/replicated, so when neither resolves on this org, browser install is the remaining route.
54
- - 🔴 **MANDATORY — resolve and render the ACTUAL clickable URL; never emit the angle-bracket placeholder and never skip the link.** So **compute it**: take the org's live instance URL (from the session / `sf org display`), replace the `.my.salesforce.com` host suffix with `.my.salesforce-setup.com`, and append `/lightning/setup/page/feature/industries-health-cloud-home-health/home?topic=SalesforceGo`. Present the finished `https://…` URL as a clickable link in the message. **Build it from the connected org — never hardcode a domain.** The transform (generic, using `<mydomain>` only as a stand-in for whatever host the connected org actually has): `https://<mydomain>.my.salesforce.com` → `https://<mydomain>.my.salesforce-setup.com/lightning/setup/page/feature/industries-health-cloud-home-health/home?topic=SalesforceGo`. Read `<mydomain>` from the live session's instance URL at runtime; do not carry any specific org's domain in this skill. (If the instance host doesn't end in `.my.salesforce.com` — e.g. a sandbox `.sandbox.my.salesforce.com` — apply the same `→ .my.salesforce-setup.com`-family substitution for that host form; the point is a real, resolved, clickable link built from the current org, not a placeholder and not a fixed domain.)
55
- > "Home Health depends on the **Field Service managed package**, and it isn't installed on your org yet. I tried installing it directly through the API, but this org's instance doesn't have the current FSL package version available to install that way — so the remaining route is the browser. Please install it here (this is the Salesforce Go guided-setup page for your org, which resolves the current package version automatically):
56
- > **`https://<yourdomain>.my.salesforce-setup.com/lightning/setup/page/feature/industries-health-cloud-home-health/home?topic=SalesforceGo`** ← *render the org's real resolved URL here per the MANDATORY note above, not this template*
57
- > (Alternative: Setup → **Field Service Settings** → toggle Field Service on → **Get Managed Package**; or the AppExchange listing. Background doc: https://sfdc.co/HomeHealthInstallFieldService.) Let me know once it's installed and I'll verify and continue. Meanwhile I can set up everything that doesn't depend on the package."
58
-
59
- - **Do NOT fabricate an `apvId`.** The old `…/packagingSetupUI/ipLanding.app?apvId=<version-id>` pattern needs a version Id that **rotates every FSL release** — inventing one risks a stale/wrong version and violates the no-invented-setup-data rule. The Salesforce Go page above (and the Field Service Settings toggle) resolve the current version for the admin, so prefer those.
60
-
61
- - **After the admin confirms**, verify via the Tooling query above (namespace `FSL` now present) before reporting success back to the caller.
62
-
63
- ## Return contract (for callers delegating to this skill)
64
-
65
- Report back one of: `installed` (namespace `FSL` confirmed present, state which path — primary/secondary/manual — got it there), `in-progress` (primary or secondary accepted the install and it has not finished; state which tier and the request id / recipe; caller should START Phase 13 (`home-health-guided-setup-agentforce-setup`) now and re-check this skill at safe points — this is NOT a failure), or `awaiting-manual` (both automated tiers failed or the ~45-min ceiling elapsed; Salesforce Go hand-off issued; caller should keep running Phase 13 / non-FSL-dependent work and re-poll this skill — detect-query polling continues during the manual install).
66
-
67
- ## Companion references
68
-
69
- - `health-cloud-revan/home-health-guided-setup-agentforce-setup` — Phase 13 — Agentforce/Einstein enablement and Home Health agent build.
70
- - `health-cloud-revan/home-health-guided-setup-enable-org-fsl` — Phase 0 — enable Home Health, FSL package, Digital Experience, FSL settings/ESO.
71
- - `health-cloud-revan/home-health-guided-setup` — the root orchestrator (full 16-group Home Health wizard) that delegates to this skill.