@salesforce/afv-skills 1.65.0 → 1.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-offline-experimentation-run/SKILL.md +16 -15
  3. package/skills/agentforce-offline-experimentation-run/scripts/sfap_replay.py +3 -245
  4. package/skills/dx-devops-work-item-manage/SKILL.md +34 -17
  5. package/skills/dx-devops-work-item-manage/examples/common-workflows.md +49 -0
  6. package/skills/dx-devops-work-item-manage/references/commit-api.md +116 -0
  7. package/skills/experience-lwc-widget-assess/SKILL.md +79 -0
  8. package/skills/experience-lwc-widget-migrate/SKILL.md +50 -0
  9. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
  10. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
  11. package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
  12. package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
  13. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
  14. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
  15. package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
  16. package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
  17. package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
  18. package/skills/platform-role-hierarchy-apply/SKILL.md +177 -0
  19. package/skills/platform-widget-generate/SKILL.md +58 -41
  20. package/skills/platform-widget-generate/references/widget-bundle-validation.md +14 -0
  21. package/skills/service-agentforce-contact-center-coordinate/SKILL.md +1 -1
  22. package/skills/service-agentforce-contact-center-coordinate/references/number_management_api.md +11 -1
  23. package/skills/service-agentforce-contact-center-coordinate/scripts/fetch-numbers.sh +12 -6
  24. package/skills/service-agentforce-contact-center-coordinate/scripts/lib.sh +16 -0
  25. package/skills/service-agentforce-contact-center-coordinate/scripts/procure-number.sh +2 -1
  26. package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +24 -11
  27. package/skills/service-digital-engagement-channel-configure/SKILL.md +25 -14
  28. package/skills/service-digital-engagement-channel-configure/references/onboarding_contract.md +143 -0
  29. package/skills/service-digital-engagement-deployment-configure/SKILL.md +61 -12
  30. package/skills/service-digital-engagement-deployment-configure/references/connect_api_creation.md +14 -5
  31. package/skills/service-digital-engagement-deployment-configure/references/onboarding_contract.md +146 -0
  32. package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +23 -13
  33. package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +7 -6
  34. package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +9 -10
  35. package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +6 -6
  36. package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +1 -1
  37. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +34 -25
  38. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +1 -1
  39. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +90 -86
  40. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/workflow.md +63 -38
  41. package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
  42. package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
  43. package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
  44. package/skills/automation-company-profile-info-query/SKILL.md +0 -51
  45. package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
  46. package/skills/automation-flow-coordinate/SKILL.md +0 -95
  47. package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
  48. package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
  49. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
  50. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
  51. package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
  52. package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
  53. package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
  54. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
  55. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
  56. package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
  57. package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
  58. package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
  59. package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
  60. package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
  61. package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
  62. package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
  63. package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
  64. package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
  65. package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
  66. package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
  67. package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
  68. package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
  69. package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
  70. package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
  71. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
  72. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
  73. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
  74. package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
  75. package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
  76. package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
  77. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
  78. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
  79. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
  80. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
  81. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
  82. package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
  83. package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
  84. package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
  85. package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
  86. package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
  87. package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
  88. package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
  89. package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
  90. package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  91. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
  92. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
  93. package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
  94. package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
  95. package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  96. package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
  97. package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
  98. package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
  99. package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
  100. package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
  101. package/skills/commerce-credit-memo-create/SKILL.md +0 -139
  102. package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
  103. package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
  104. package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
  105. package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
  106. package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
  107. package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
  108. package/skills/commerce-fees-apply/SKILL.md +0 -227
  109. package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
  110. package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
  111. package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
  112. package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
  113. package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
  114. package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
  115. package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
  116. package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
  117. package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
  118. package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
  119. package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
  120. package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
  121. package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
  122. package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
  123. package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
  124. package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
  125. package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
  126. package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
  127. package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
  128. package/skills/commerce-product-details-get/SKILL.md +0 -363
  129. package/skills/commerce-product-search/SKILL.md +0 -563
  130. package/skills/commerce-react-storefront-create/SKILL.md +0 -350
  131. package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
  132. package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
  133. package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
  134. package/skills/communications-initial-setup-configure/SKILL.md +0 -630
  135. package/skills/communications-multisite-configure/SKILL.md +0 -571
  136. package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
  137. package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
  138. package/skills/communications-tmf-integrate/SKILL.md +0 -1368
  139. package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
  140. package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
  141. package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
  142. package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
  143. package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
  144. package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
  145. package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
  146. package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
  147. package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
  148. package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
  149. package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
  150. package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
  151. package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
  152. package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
  153. package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
  154. package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
  155. package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
  156. package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
  157. package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
  158. package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
  159. package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
  160. package/skills/data360-activation-create/SKILL.md +0 -104
  161. package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
  162. package/skills/data360-activation-target-create/SKILL.md +0 -93
  163. package/skills/data360-activation-v2-create/SKILL.md +0 -456
  164. package/skills/data360-audience-dmo-get/SKILL.md +0 -38
  165. package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
  166. package/skills/data360-calculated-insight-create/SKILL.md +0 -148
  167. package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
  168. package/skills/data360-code-extension-create/SKILL.md +0 -115
  169. package/skills/data360-communication-capping-create/SKILL.md +0 -227
  170. package/skills/data360-connection-create/SKILL.md +0 -491
  171. package/skills/data360-content-lens-create/SKILL.md +0 -181
  172. package/skills/data360-data-action-create/SKILL.md +0 -126
  173. package/skills/data360-data-action-target-create/SKILL.md +0 -181
  174. package/skills/data360-data-clean-room-create/SKILL.md +0 -238
  175. package/skills/data360-data-governance-create/SKILL.md +0 -746
  176. package/skills/data360-data-graph-create/SKILL.md +0 -82
  177. package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
  178. package/skills/data360-data-lake-object-create/SKILL.md +0 -207
  179. package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
  180. package/skills/data360-data-model-object-create/SKILL.md +0 -128
  181. package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
  182. package/skills/data360-data-space-create/SKILL.md +0 -161
  183. package/skills/data360-data-streams-create/SKILL.md +0 -324
  184. package/skills/data360-engagement-signal-get/SKILL.md +0 -38
  185. package/skills/data360-experiment-create/SKILL.md +0 -82
  186. package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
  187. package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
  188. package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
  189. package/skills/data360-identity-resolution-create/SKILL.md +0 -115
  190. package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
  191. package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
  192. package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
  193. package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
  194. package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
  195. package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
  196. package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
  197. package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
  198. package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
  199. package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
  200. package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
  201. package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
  202. package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
  203. package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
  204. package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
  205. package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
  206. package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
  207. package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
  208. package/skills/experience-afv-query/SKILL.md +0 -234
  209. package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
  210. package/skills/experience-apex-components-configure/SKILL.md +0 -69
  211. package/skills/experience-apex-pages-configure/SKILL.md +0 -107
  212. package/skills/experience-app-home-configure/SKILL.md +0 -76
  213. package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
  214. package/skills/experience-briefcase-configure/SKILL.md +0 -287
  215. package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
  216. package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
  217. package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
  218. package/skills/experience-content-assets-configure/SKILL.md +0 -86
  219. package/skills/experience-custom-domain-create/SKILL.md +0 -727
  220. package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
  221. package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
  222. package/skills/experience-flow-category-configure/SKILL.md +0 -117
  223. package/skills/experience-formula-configure/SKILL.md +0 -358
  224. package/skills/experience-global-actions-configure/SKILL.md +0 -69
  225. package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
  226. package/skills/experience-instrumentation-configure/SKILL.md +0 -64
  227. package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
  228. package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
  229. package/skills/experience-lightning-out-configure/SKILL.md +0 -129
  230. package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
  231. package/skills/experience-lightning-types-query/SKILL.md +0 -98
  232. package/skills/experience-malware-scan-configure/SKILL.md +0 -71
  233. package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
  234. package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
  235. package/skills/experience-notification-types-configure/SKILL.md +0 -206
  236. package/skills/experience-notifications-configure/SKILL.md +0 -75
  237. package/skills/experience-record-discovery-query/SKILL.md +0 -227
  238. package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
  239. package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
  240. package/skills/experience-schema-builder-open/SKILL.md +0 -38
  241. package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
  242. package/skills/experience-static-resources-configure/SKILL.md +0 -74
  243. package/skills/field-service-setup-coordinate/SKILL.md +0 -62
  244. package/skills/field-service-work-plan-configure/SKILL.md +0 -253
  245. package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
  246. package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
  247. package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
  248. package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
  249. package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
  250. package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
  251. package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
  252. package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
  253. package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
  254. package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
  255. package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
  256. package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
  257. package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
  258. package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
  259. package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
  260. package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
  261. package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
  262. package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
  263. package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
  264. package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
  265. package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
  266. package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
  267. package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
  268. package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
  269. package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
  270. package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
  271. package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
  272. package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
  273. package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
  274. package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
  275. package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
  276. package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
  277. package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
  278. package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
  279. package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
  280. package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
  281. package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
  282. package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
  283. package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
  284. package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
  285. package/skills/health-cloud-initial-configure/SKILL.md +0 -511
  286. package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
  287. package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
  288. package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
  289. package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
  290. package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
  291. package/skills/industries-account-score-settings-query/SKILL.md +0 -78
  292. package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
  293. package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
  294. package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
  295. package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
  296. package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
  297. package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
  298. package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
  299. package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
  300. package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
  301. package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
  302. package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
  303. package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
  304. package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
  305. package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
  306. package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
  307. package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
  308. package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
  309. package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
  310. package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
  311. package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
  312. package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
  313. package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
  314. package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
  315. package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
  316. package/skills/industries-compliance-configure/SKILL.md +0 -102
  317. package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
  318. package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
  319. package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
  320. package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
  321. package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
  322. package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
  323. package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
  324. package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
  325. package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
  326. package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
  327. package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
  328. package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
  329. package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
  330. package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
  331. package/skills/industries-decision-tables-configure/SKILL.md +0 -439
  332. package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
  333. package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
  334. package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
  335. package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
  336. package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
  337. package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
  338. package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
  339. package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
  340. package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
  341. package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
  342. package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
  343. package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
  344. package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
  345. package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
  346. package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
  347. package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
  348. package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
  349. package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
  350. package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
  351. package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
  352. package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
  353. package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
  354. package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
  355. package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
  356. package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
  357. package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
  358. package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
  359. package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
  360. package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
  361. package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
  362. package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
  363. package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
  364. package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
  365. package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
  366. package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
  367. package/skills/industries-home-health-skills-create/SKILL.md +0 -31
  368. package/skills/industries-home-health-users-create/SKILL.md +0 -29
  369. package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
  370. package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
  371. package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
  372. package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
  373. package/skills/industries-object-enablement-configure/SKILL.md +0 -86
  374. package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
  375. package/skills/integration-apex-settings-configure/SKILL.md +0 -61
  376. package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
  377. package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
  378. package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
  379. package/skills/platform-privacy-agent-settings-configure/SKILL.md +0 -752
@@ -1,8 +1,10 @@
1
1
  ---
2
2
  name: field-service-work-rule-designer-configure
3
- description: "Designs the work rules for a Salesforce Field Service scheduling policy — the hard filters that determine which resources and time slots are eligible for an appointment. Step 2 of the three-part scheduling policy design flow. Receives the policy block from sfs-scheduling-policy-designer and delegates to sfs-service-objective-designer when complete."
3
+ description: "Designs the work rules for a Salesforce Field Service scheduling policy — the hard filters that determine which resources and time slots are eligible for an appointment. Step 2 of the three-part scheduling policy design flow; receives the policy block from sfs-scheduling-policy-designer and delegates to sfs-service-objective-designer when complete. Use this skill when a user wants to design or configure the work rules (hard eligibility filters) for a Field Service scheduling policy."
4
+ user-invocable: false
4
5
  metadata:
5
6
  version: "1.0"
7
+ domains: ["Field Service"]
6
8
  ---
7
9
 
8
10
  # Salesforce Field Service – Work Rule Designer
@@ -40,119 +42,139 @@ Each row: **name — engine (DB/Apex) — what it does.** "DB w/ ESO" means the
40
42
  | **TimeSlot Designated Work** | Apex | Reserves a time slot/shift for a specific work type — only that type schedules in that window. All-or-nothing rule (no relevance groups). |
41
43
  | **Service Crew Resources Availability** | Apex | Ensures a crew-type resource is only assigned when the crew meets the parent record's minimum crew size. |
42
44
 
43
- ### Interview order — MANDATORY
45
+ ### Requirements mapping
46
+
47
+ Don't start from the rule list — start from **what the business needs**, then map each requirement to the rule(s) that satisfy it. Walk the user through this mapping:
48
+
49
+ | If the requirement is… | Use this work rule |
50
+ |---|---|
51
+ | Resources need specific skills / proficiency levels | **Match Skills**; **Extended Match** |
52
+ | Non-skill matching factors (e.g., serviceable postal codes) | **Match Boolean**; **Match Skills**; **Extended Match** |
53
+ | Breaks during the day / specific or multiple breaks | **Service Resource Availability** (+ work rule entries for multiple breaks, ESO) |
54
+ | Can work go into overtime? Can resources travel outside working hours? | **Service Resource Availability** |
55
+ | Max number / duration of appointments per resource per day | **Count Rule** |
56
+ | A specific resource **must** be assigned | **Required Resources** |
57
+ | A specific resource **must not** be assigned | **Excluded Resources** |
58
+ | Customer has specific service-call time windows | **Service Appointment Visiting Hours** |
59
+ | Ensure crew-type resources get scheduled | **Service Crew Resources Availability** |
60
+ | Appointments have arrival windows / required arrival times | **Match Time Rule** |
61
+ | Cap travel distance from home / control travel cost across large territories | **Maximum Travel from Home** — ask whether the cap is by **distance** or by **travel time** (see note below) |
62
+ | Assign specific work types to a resource for part/all of a day | **TimeSlot Designated Work** |
63
+ | Restrict work to the resource's **primary and secondary** service territory memberships | **Working Territories** |
44
64
 
45
- Walk through the 16 work rule types **in the exact order of the table in *The 16 work rule types* above** — top to bottom, one rule at a time. **Do NOT split the interview into a separate "which rules apply" pass and a later "configure them" pass, and do NOT reorder the rules.** For each rule, in order:
65
+ Always include exactly one **Service Resource Availability** rule — the only mandatory rule this skill emits. Never emit Earliest Start Permitted or Due Date — provisioned automatically.
46
66
 
47
- 1. **Decide whether it applies.** Service Resource Availability is always in (no question). For every other rule, either the user's stated business needs already make it obviously needed, or ask the short **Applies when / ask** question in that rule's entry below. Interpret the user's needs against the *What it does* column — e.g. "resources need the right skills" → Match Skills; "cap travel from home" → Maximum Travel from Home.
48
- 2. **If it applies and it has configuration, ask that rule's config question(s) right now** — before moving on to the next rule. Never defer configuration to the end. If the rule is selection-only (no config), just confirm it and continue.
67
+ **Arrival Window Match Time rules (opt-in default pair).** If the user wants appointments to honor customer **arrival windows**, ask them to confirm, and if they agree, emit **two** Match Time rules with these exact default settings — do not ask the user to fill these in, they are the standard arrival-window configuration:
49
68
 
50
- Then continue to the next rule in the table. Ask one question at a time. Only after you have walked all 16 rules is the rule list final.
69
+ | Setting | Rule A | Rule B |
70
+ |---|---|---|
71
+ | Name | `Arrival Window Start` | `Arrival Window End` |
72
+ | Service Schedule Time Property | `SchedStartTime` | `SchedStartTime` |
73
+ | Service Time Operator | `Later than or Equal to` | `Before or Equal to` |
74
+ | Service Time Property | `ArrivalWindowStartTime` | `ArrivalWindowEndTime` |
75
+ | Pass Empty Values | `true` | `true` |
51
76
 
52
- **Do NOT ask a relevance-group / subset question on every rule.** Most rules apply policy-wide, and asking "all or a subset?" after each one is noise. Instead:
77
+ Emit each as a Match Time work rule whose `params` carry those four values (keys `serviceScheduleTimeProperty`, `serviceTimeOperator`, `serviceTimeProperty`, `passEmptyValues`). These are separate from the mandatory Earliest Start Permitted / Due Date rules (never emitted).
53
78
 
54
- - **React to scoping the user volunteers.** If while answering a rule's question the user signals the rule is only for a specific scenario, workforce, or work type — e.g. "only for part-time techs," "just for installation jobs," "tighter cap in France" — *then* pursue it: confirm the basis (Service Territory Member for a resource subset, Service Appointment for a work subset), get the Boolean field name, and record `relevanceGroup: { basis, booleanField }` on that rule. (First check the rule supports that basis under ES&O — see *Relevance Groups*.)
55
- - **Otherwise sweep for it once, at the end.** After all 16 rules are walked, ask a single closing question: *"Are there any constraints here that should apply only to a certain part of your workforce or to certain types of work — rather than to everyone/everything? For example, different break or travel limits for part-time vs. full-time techs, or stricter handling for a specific work type or region."* Only if the user says yes do you scope the affected rules (per the *Relevance Groups* section). If no, leave every `relevanceGroup` null.
79
+ **Interpreting and emitting break times (clock time vs. shift-start offset):** A Service Resource Availability rule expresses breaks in one of two shapes, and **this skill decides the shape and emits the values the data-layer skill needs** — the data-layer skill never receives a clock time it has to convert. Choose the shape as follows:
56
80
 
57
- Always include exactly one **Service Resource Availability** rule — the only mandatory rule this skill emits. Never emit Earliest Start Permitted or Due Date — provisioned automatically.
81
+ - **One fixed daily break at an absolute clock time** (e.g. "30 minutes at 12:00 every day") → emit it as an **absolute** break: `{ "mode": "absolute", "startClock": "12:00", "durationMinutes": 30 }`. No offset math, no working-day start needed.
82
+ - **One or more breaks defined as an offset from the start of the working day** (e.g. "a 30-minute lunch starting 3 hours into the shift") → emit each as an **offset** break, in **minutes from the start of the working day**: `{ "mode": "offset", "earliestStartOffsetMinutes": 180, "latestEndOffsetMinutes": 240, "durationMinutes": 30 }`. All three of `earliestStartOffsetMinutes`, `latestEndOffsetMinutes`, and `durationMinutes` are **mandatory** for an offset break. **When the user states the break in offset terms already** (e.g. "3 hours after the start of day"), that offset *is* `earliestStartOffsetMinutes` (180) — **do not ask for the working-day start; you don't need it.**
83
+ - **Breaks given as clock times but there is more than one** (e.g. "15 minutes at 10:00 and 30 minutes at 12:00") → you must use the **offset** shape, which means **converting each clock time into an offset from the start of the working day**. You cannot do that without knowing when the day starts, so **ask the user for the shift / working-day start**, then compute `earliestStartOffsetMinutes = (break start clock − day start)` in minutes for each break. Never assume the day starts at midnight (that would turn "10:00" into a wrong 600-minute offset). *(Only ask for the day start in this clock-time case — never when the break is already expressed as an offset.)*
58
84
 
59
- ---
85
+ **Always emit `latestEndOffsetMinutes` for every offset break — ask for it directly, do not fabricate a window.** The earliest start comes from what the user stated (an offset, or a converted clock time) — **do not invent ± tolerance windows around it** (no "±1 hour" / "±2 hour" options). If the user only gave a break start (or a duration with no stated finish-by), **ask them plainly for the latest the break may end**, phrased in the *same terms they used*: if they gave an offset ("starts 3 hours after start of day"), ask "what is the latest it may end, as time after the start of the day?" and convert (e.g. "4 hours after start" → 240); if they gave a clock time, ask for a clock time and convert with the day start. If the user says the break is fixed/pinned with no flex, set `latestEndOffsetMinutes = earliestStartOffsetMinutes + durationMinutes`. Never emit an offset break missing any of the three fields, and never guess the latest-end. If a break requirement is too involved to convert reliably, ask clarifying questions or recommend the manual approach rather than guessing.
86
+
87
+ **Maximum Travel from Home — establish the cap type, not the unit.** When a requirement caps how far a resource may travel from home, **ask the user whether the cap is by distance or by travel time** — the two are configured differently and the data-layer skill needs to know which. Emit the value and the type in `params`: `{ "maxTravelFromHome": 50, "maxTravelFromHomeType": "Distance" | "Travel Time" }`. Interpret the user's phrasing to set the *type* — "50 miles"/"50 km" ⇒ `Distance`, "45 minutes" ⇒ `Travel Time` — but **do not ask for or emit a distance unit (miles vs km): it is not part of the work-rule config**; the unit is governed by the org's locale/distance settings elsewhere, so the rule stores only the number. For `Travel Time` the value is minutes. Never emit the cap value without its type.
60
88
 
61
- ### The rules, in interview order
89
+ ### Per-rule configuration
62
90
 
63
- Take these in the order shown — it matches the table above. For each entry: **Applies when** tells you how to decide it's needed; **Ask** lists the config questions to ask *immediately* on a yes; **Emit** gives the exact `params` keys — use them verbatim so the data-layer skill can map them.
91
+ Once the requirements mapping has selected which rules to build, configure the specifics for each. The **`Emit` line gives the exact `params` keys** — use these verbatim so the data-layer skill can map them. Only configure rules the user selected; skip the rest.
64
92
 
65
93
  ---
66
94
 
67
- **1. Service Resource Availability** *(always present — the only mandatory rule)*
68
- Applies when: always. No applicability question.
95
+ **Service Resource Availability** *(always present)*
96
+ Gate: Always included — no selection needed.
69
97
  Ask:
70
98
  - "Can work run into **overtime**?" (yes/no)
71
99
  - "Can resources **travel outside working hours** to/from home?" — if yes, ask how many minutes from home (to first job) and to home (from last job); "no limit" = 120; "no" = 0 for both
72
- - Breaks interview (see *Interpreting and emitting break times* below)
100
+ - Breaks interview (see *Interpreting and emitting break times*)
73
101
 
74
102
  Emit: `{ "enableOvertime": true|false, "travelFromHomeMinutes": <number>, "travelToHomeMinutes": <number>, "breaks": [ … ] }`
75
- Note: Travel values are minutes — 0 = no travel outside working hours, 120 = effectively unlimited. If the user gives no availability detail, emit baseline (`enableOvertime: false`, travel keys and breaks omitted).
103
+ Note: Travel values are minutes — 0 = no travel outside working hours, 120 = effectively unlimited. If user gives no availability detail, emit baseline (`enableOvertime: false`, travel keys and breaks omitted).
76
104
 
77
105
  ---
78
106
 
79
- **2. Match Time Rule** *(arrival windows)*
80
- Applies when: appointments should honor customer **arrival windows** / required arrival times. Ask: "Should appointments honor customer arrival windows?"
81
- Emit: on a yes, emit the **two** default rules from the *Arrival Window Match Time rules* table below — do not ask the user to fill these in.
107
+ **Match Time Rule** *(arrival windows)*
108
+ Gate: Only if selected in requirements mapping.
109
+ Ask: "Should appointments honor customer **arrival windows**?"
110
+ Emit: Two default rules from the Arrival Window table — no further questions.
82
111
 
83
112
  ---
84
113
 
85
- **3. Match Skills**
86
- Applies when: resources need specific skills / proficiency levels.
114
+ **Match Skills**
115
+ Gate: Only if selected in requirements mapping.
87
116
  Ask: "Should the resource also **meet a minimum skill level** (proficiency), or is simply *having* the skill enough?"
88
117
  Emit: `{ "matchSkillLevel": true|false }`
89
118
  Note: Do not ask about skill-type AND/OR logic — this skill does not configure `skillTypeLogic`.
90
119
 
91
120
  ---
92
121
 
93
- **4. Match Fields**
94
- Applies when: one appointment field must match one resource field (1:1). (For one appointment field vs. multiple resource values, use Extended Match instead.)
122
+ **Match Fields**
123
+ Gate: Only if selected in requirements mapping.
95
124
  Ask: "Which Service Appointment field must match which Service Resource field, and with what operator?"
96
125
  Emit: `{ "serviceProperty": "<SA field>", "resourceProperty": "<resource field>", "booleanOperator": "=" }`
97
126
  Note: Operator is one of `=`, `>=`, `<=`, `>`, `<` (default `=`). Field names are the customer's own — pass through as given.
98
127
 
99
128
  ---
100
129
 
101
- **5. Match Boolean**
102
- Applies when: a checkbox on the resource must be true/false — including non-skill matching factors (e.g., serviceable postal codes).
130
+ **Match Boolean**
131
+ Gate: Only if selected in requirements mapping.
103
132
  Ask: "Which checkbox field on the resource must be true (or false)?"
104
133
  Emit: `{ "resourceProperty": "<resource field>", "value": true|false }`
105
134
  Note: Max 5 Match Boolean rules per policy.
106
135
 
107
136
  ---
108
137
 
109
- **6. Extended Match** *(advisory only — data-layer skill will not build this)*
110
- Applies when: custom-criteria matching via a junction object (e.g., serviceable postal codes, product lines).
111
- Ask: None — no params to collect. Advise the user to set up before deploying:
112
- 1. A junction object with exactly **two** Master-Detail relationships (to Service Resource + matched object) — packaged trigger requires exactly two or the rule fails
113
- 2. A Service Appointment Lookup field driving the match; a reference field on the junction matched against it
114
- 3. Once those exist, create and configure the rule manually in Setup (Field Service Settings → Scheduling → Work Rules)
115
-
116
- Capture intended objects/fields in `prerequisites` as advisory text — do not emit in `workRules[]`.
117
-
118
- ---
119
-
120
- **7. Match Territory** — *(skip entirely; not part of the interview)*
121
- This interview never emits a standalone Match Territory rule. **Skip it silently** — do not ask a Match Territory question, and do not announce or narrate that you are skipping it. Move straight from rule 6 to rule 8 with no mention of Match Territory at all. (If a user explicitly asks for primary/relocation-only territory scoping, advise manual configuration then — but never raise it yourself. Also: don't cover a resource by both Match Territory and Working Territories.)
138
+ **Maximum Travel from Home**
139
+ Gate: Only if selected in requirements mapping.
140
+ Ask: "Is the cap by **distance** or by **travel time**?" (see cap-type note in Requirements mapping)
141
+ Emit: `{ "maxTravelFromHome": <number>, "maxTravelFromHomeType": "Distance"|"Travel Time" }`
142
+ Note: Distance unit (miles vs km) is not part of the rule — governed by org locale. For Travel Time, value is minutes.
122
143
 
123
144
  ---
124
145
 
125
- **8. Working Territories**
126
- Applies when: work must be restricted to the resource's **primary and secondary** service territory memberships.
146
+ **Working Territories**
147
+ Gate: Only if selected in requirements mapping.
127
148
  Ask: None — selecting the rule is sufficient.
128
149
  Emit: `{ "workingLocationEnablePrimary": true }`
150
+ Note: No separate Match Territory question — the interview does not emit a standalone Match Territory rule. If primary/relocation-only scoping is needed, advise manual configuration.
129
151
 
130
152
  ---
131
153
 
132
- **9. Maximum Travel from Home**
133
- Applies when: capping distance/travel time between a resource's home and any assigned appointment / controlling travel cost across large territories.
134
- Ask: "Is the cap by **distance** or by **travel time**?" (see the cap-type note below), plus the cap value.
135
- Emit: `{ "maxTravelFromHome": <number>, "maxTravelFromHomeType": "Distance"|"Travel Time" }`
136
- Note: Distance unit (miles vs km) is not part of the rule — governed by org locale. For Travel Time, value is minutes.
137
-
138
- ---
154
+ **Service Crew Resources Availability**
155
+ Gate: Only if selected in requirements mapping.
156
+ Ask:
157
+ - "Should the rule evaluate individual crew members' availability and skills, not just the crew record?" → `considerCrewMembership`
158
+ - "What is the maximum number of extra resources beyond the base crew that can be pulled in?" → `maxAdditionalResources` (optional)
139
159
 
140
- **10. Required Resources** *(selection-only)*
141
- Applies when: any work order ever has a resource marked **Required** that must always be assigned. Ask: "Do any work orders ever have a specific resource marked *Required* that must always be assigned to that job?"
142
- Emit: `{}`
143
- Prerequisite: Resource Preference records must exist on the work order / WOLI — the rule enforces them but does not create them.
160
+ Emit: `{ "considerCrewMembership": true|false, "maxAdditionalResources": <number> }` (omit `maxAdditionalResources` if blank)
144
161
 
145
162
  ---
146
163
 
147
- **11. Excluded Resources** *(selection-only)*
148
- Applies when: any work order ever has a resource marked **Excluded** that must never be assigned. Ask: "Do any work orders ever have a resource marked *Excluded* that must never be assigned?"
149
- Emit: `{}`
150
- Prerequisite: Resource Preference records must exist on the work order / WOLI — the rule enforces them but does not create them.
164
+ **Extended Match** *(advisory only — data-layer skill will not build this)*
165
+ Gate: Only if selected in requirements mapping.
166
+ Ask: None — no params to collect.
167
+ Advise the user to set up before deploying:
168
+ 1. A junction object with exactly **two** Master-Detail relationships (to Service Resource + matched object) — packaged trigger requires exactly two or the rule fails
169
+ 2. A Service Appointment Lookup field driving the match; a reference field on the junction matched against it
170
+ 3. Once those exist, create and configure the rule manually in Setup (Field Service Settings → Scheduling → Work Rules)
171
+
172
+ Capture intended objects/fields in `prerequisites` as advisory text — do not emit in `workRules[]`.
151
173
 
152
174
  ---
153
175
 
154
- **12. Count Rule**
155
- Applies when: capping the number/duration of appointments (or a custom value) per resource per day.
176
+ **Count Rule**
177
+ Gate: Only if selected in requirements mapping.
156
178
  Ask: Have the user describe the limit in plain terms, then classify into:
157
179
  - `countBy` — `"Appointments"` (count of jobs), `"Hours"` (duration cap), or `"Custom"` (sum of a custom SA field)
158
180
  - `maxValue` — the numeric cap (for Hours, convert to hours)
@@ -163,67 +185,32 @@ Note: Time Resolution is always Daily; counted object is always Service Appointm
163
185
 
164
186
  ---
165
187
 
166
- **13. Work Capacity** *(ESO only — selection-only)*
167
- Applies when: Work Capacity Limit records cap how much work schedules per territory. Ask: "Do you use Work Capacity Limit records to cap how much work can be scheduled per territory?"
188
+ **Selection-only rules** *(no config fields — each rule acts as an on/off switch that tells the scheduler to enforce constraints defined elsewhere in the org; selected in requirements mapping, no further questions needed)*
189
+
190
+ **Required Resources / Excluded Resources**
191
+ Gate: Only if selected in requirements mapping.
168
192
  Emit: `{}`
169
- Prerequisite: WorkCapacityLimit records must be configured per territory outside the policy.
193
+ Prerequisite: Resource Preference records must exist on the work order / WOLI — the rule enforces them but does not create them.
170
194
 
171
- ---
195
+ **Work Capacity** *(ESO only)*
196
+ Gate: Only if selected in requirements mapping.
197
+ Emit: `{}`
198
+ Prerequisite: WorkCapacityLimit records must be configured per territory outside the policy.
172
199
 
173
- **14. Service Appointment Visiting Hours** *(selection-only)*
174
- Applies when: customers have allowed visit windows that should block scheduling outside those hours. Ask: "Do customers have allowed visit windows (e.g., weekdays only, or mornings only) that should block scheduling outside those hours?"
200
+ **Service Appointment Visiting Hours**
201
+ Gate: Only if selected in requirements mapping.
175
202
  Emit: `{}`
176
- Note: Do not ask for the windows — they are per-account data on OperatingHours records, not a policy-wide value. All-or-nothing rule — no relevance-group scoping.
203
+ Note: Do not ask for the windows — they are per-account data on OperatingHours records, not a policy-wide value. (No relevance-group scoping.)
177
204
  Prerequisite: Each account must have visiting/operating hours populated; the Work Order's Visiting Hours must resolve from the account.
178
205
 
179
- ---
180
-
181
- **15. TimeSlot Designated Work** *(selection-only)*
182
- Applies when: certain time slots must be reserved for specific types of work. Ask: "Do you need to reserve certain time slots for specific types of work (e.g., install work only in morning slots)?"
206
+ **TimeSlot Designated Work**
207
+ Gate: Only if selected in requirements mapping.
183
208
  Emit: `{}`
184
- Note: Do not ask for slot→work mappings — that is data setup. Phrase the selection as "types of work," not "Work Type" (the designation is broader than the Work Type object). All-or-nothing rule — no relevance-group scoping.
209
+ Note: Do not ask for slot→work mappings — that is data setup. Phrase the selection as "types of work," not "Work Type" (the designation is broader than the Work Type object). (No relevance-group scoping.)
185
210
  Prerequisite: Time slots must be configured to designate the intended work.
186
211
 
187
212
  ---
188
213
 
189
- **16. Service Crew Resources Availability**
190
- Applies when: crew-type resources must only be assigned when the crew meets the parent record's minimum crew size.
191
- Ask:
192
- - "Should the rule evaluate individual crew members' availability and skills, not just the crew record?" → `considerCrewMembership`
193
- - "What is the maximum number of extra resources beyond the base crew that can be pulled in?" → `maxAdditionalResources` (optional)
194
-
195
- Emit: `{ "considerCrewMembership": true|false, "maxAdditionalResources": <number> }` (omit `maxAdditionalResources` if blank)
196
-
197
- ---
198
-
199
- ### Configuration reference notes
200
-
201
- These deep-dives support the **Ask** lines above; consult them when configuring the rule that references them.
202
-
203
- **Arrival Window Match Time rules (default pair — rule 2).** When the user confirms appointments should honor customer arrival windows, emit **two** Match Time rules with these exact default settings — do not ask the user to fill these in, they are the standard arrival-window configuration:
204
-
205
- | Setting | Rule A | Rule B |
206
- |---|---|---|
207
- | Name | `Arrival Window Start` | `Arrival Window End` |
208
- | Service Schedule Time Property | `SchedStartTime` | `SchedStartTime` |
209
- | Service Time Operator | `Later than or Equal to` | `Before or Equal to` |
210
- | Service Time Property | `ArrivalWindowStartTime` | `ArrivalWindowEndTime` |
211
- | Pass Empty Values | `true` | `true` |
212
-
213
- Emit each as a Match Time work rule whose `params` carry those four values (keys `serviceScheduleTimeProperty`, `serviceTimeOperator`, `serviceTimeProperty`, `passEmptyValues`). These are separate from the mandatory Earliest Start Permitted / Due Date rules (never emitted).
214
-
215
- **Interpreting and emitting break times — clock time vs. shift-start offset (rule 1).** A Service Resource Availability rule expresses breaks in one of two shapes, and **this skill decides the shape and emits the values the data-layer skill needs** — the data-layer skill never receives a clock time it has to convert. Choose the shape as follows:
216
-
217
- - **One fixed daily break at an absolute clock time** (e.g. "30 minutes at 12:00 every day") → emit it as an **absolute** break: `{ "mode": "absolute", "startClock": "12:00", "durationMinutes": 30 }`. No offset math, no working-day start needed.
218
- - **One or more breaks defined as an offset from the start of the working day** (e.g. "a 30-minute lunch starting 3 hours into the shift") → emit each as an **offset** break, in **minutes from the start of the working day**: `{ "mode": "offset", "earliestStartOffsetMinutes": 180, "latestEndOffsetMinutes": 240, "durationMinutes": 30 }`. All three of `earliestStartOffsetMinutes`, `latestEndOffsetMinutes`, and `durationMinutes` are **mandatory** for an offset break. **When the user states the break in offset terms already** (e.g. "3 hours after the start of day"), that offset *is* `earliestStartOffsetMinutes` (180) — **do not ask for the working-day start; you don't need it.**
219
- - **Breaks given as clock times but there is more than one** (e.g. "15 minutes at 10:00 and 30 minutes at 12:00") → you must use the **offset** shape, which means **converting each clock time into an offset from the start of the working day**. You cannot do that without knowing when the day starts, so **ask the user for the shift / working-day start**, then compute `earliestStartOffsetMinutes = (break start clock − day start)` in minutes for each break. Never assume the day starts at midnight (that would turn "10:00" into a wrong 600-minute offset). *(Only ask for the day start in this clock-time case — never when the break is already expressed as an offset.)*
220
-
221
- **Always emit `latestEndOffsetMinutes` for every offset break — ask for it directly, do not fabricate a window.** The earliest start comes from what the user stated (an offset, or a converted clock time) — **do not invent ± tolerance windows around it** (no "±1 hour" / "±2 hour" options). If the user only gave a break start (or a duration with no stated finish-by), **ask them plainly for the latest the break may end**, phrased in the *same terms they used*: if they gave an offset ("starts 3 hours after start of day"), ask "what is the latest it may end, as time after the start of the day?" and convert (e.g. "4 hours after start" → 240); if they gave a clock time, ask for a clock time and convert with the day start. If the user says the break is fixed/pinned with no flex, set `latestEndOffsetMinutes = earliestStartOffsetMinutes + durationMinutes`. Never emit an offset break missing any of the three fields, and never guess the latest-end. If a break requirement is too involved to convert reliably, ask clarifying questions or recommend the manual approach rather than guessing.
222
-
223
- **Maximum Travel from Home — establish the cap type, not the unit (rule 9).** When a requirement caps how far a resource may travel from home, **ask the user whether the cap is by distance or by travel time** — the two are configured differently and the data-layer skill needs to know which. Emit the value and the type in `params`: `{ "maxTravelFromHome": 50, "maxTravelFromHomeType": "Distance" | "Travel Time" }`. Interpret the user's phrasing to set the *type* — "50 miles"/"50 km" ⇒ `Distance`, "45 minutes" ⇒ `Travel Time` — but **do not ask for or emit a distance unit (miles vs km): it is not part of the work-rule config**; the unit is governed by the org's locale/distance settings elsewhere, so the rule stores only the number. For `Travel Time` the value is minutes. Never emit the cap value without its type.
224
-
225
- ---
226
-
227
214
  ## Relevance Groups
228
215
 
229
216
  A relevance group scopes a single work rule or service objective so it applies only to certain appointments or resources, instead of the whole policy. This lets one policy hold different logic for different work or resource types — e.g., different break/travel limits for part-time vs. full-time employees, or expedited scheduling for high-value accounts.
@@ -299,16 +286,3 @@ When the user confirms the work rules, delegate to `sfs-service-objective-design
299
286
  Do not start the service objective interview here. Transition message:
300
287
 
301
288
  > "Work rules are locked in. Next: service objectives — the scoring criteria that rank the eligible candidates. I'll walk through the trade-off questions one at a time."
302
-
303
- <!-- skill-validate: ignore-start -->
304
- <!-- codey:operations start -->
305
- ## Operations Reference
306
-
307
- Operations this skill uses — routing and dependency reference.
308
-
309
- | Operation | Purpose | Status | Call | Depends on |
310
- |-----------|---------|--------|------|------------|
311
- | `emit-work-rules-block` | write | — | — | — |
312
- | `handoff-to-service-objective-designer` | delegate | — | → `sfs-setup-experience/sfs-service-objective-designer` | `emit-work-rules-block` |
313
- <!-- codey:operations end -->
314
- <!-- skill-validate: ignore-end -->
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: platform-role-hierarchy-apply
3
+ description: "Bulk-realign an existing Salesforce UserRole hierarchy from an external org-chart artifact (PDF, xlsx, or plain-text list of role-and-parent pairs) in one admin-approved manifest. Clarify scope and whether users move with roles, resolve identities that do not match verbatim, diff the artifact against the current tree, and submit create, rename, reparent, empty-role delete, and user-assignment mutations together. Triggers on \"reorganize the role hierarchy\", \"apply this org chart to roles\", \"bulk update role parents\", \"realign roles from PDF\", \"restructure the role hierarchy\", \"reparent roles from this spreadsheet\". Do not trigger for a single role create, rename, or reparent with no other changes, or for asking which roles exist or how they are nested — that is `managing-roles`. Do not trigger for territory, account, or forecast hierarchies, or for authoring sharing rules."
4
+ metadata:
5
+ version: "1.0"
6
+ ---
7
+
8
+ # Role Hierarchy Restructure
9
+
10
+ Apply many UserRole changes from an artifact in one admin-approved manifest.
11
+
12
+ If the admin only asks which roles exist or how they are nested, hand off to `managing-roles`. Do not query, do not ask the step 0 questions, and do not submit.
13
+
14
+ ## Inputs
15
+
16
+ - PDF org chart (text-selectable), `.xlsx` / `.csv` with `role_name` and `parent_role_name` (empty parent = top-level), or plain text with one `Role: Parent` pair per line.
17
+ - Or a pre-parsed list of `{roleName, parentRoleName}` objects.
18
+ - Optional mapping hints when a chart name is not the org's `Name` or `DeveloperName`.
19
+
20
+ ## Flow
21
+
22
+ ### 0. Clarify before querying
23
+
24
+ Ask anything still unresolved. Do not guess.
25
+
26
+ - **Scope.** Default is selected branches: roles absent from the artifact stay. "Full hierarchy" still does not delete those roles unless the admin asked for each deletion.
27
+ - **User reassignment.** Default is no. Do not emit `AssignUser` or `MoveUser` without an explicit yes.
28
+ - **Ambiguous identities.** Resolve every role and user in one batch. See step 2.
29
+ - **Conflicts.** Two parents for one role, or a role parented to itself: stop until the admin picks.
30
+
31
+ If the artifact matches fewer than 20% of its roles to the current tree, stop and ask whether it is a greenfield replacement, the wrong file, or a mapping problem. Do not build a manifest until the admin confirms a greenfield replacement. Between 20% and 50%, show the fraction in the preview and continue.
32
+
33
+ ### 1. Read the current hierarchy
34
+
35
+ ```text
36
+ SELECT Id, DeveloperName, Name, ParentRoleId
37
+ FROM UserRole
38
+ LIMIT 10000
39
+ ```
40
+
41
+ Match artifact roles by `DeveloperName`, then case-insensitive `Name`.
42
+
43
+ ### 2. Parse the artifact and resolve identities
44
+
45
+ Normalize to `{roleName, parentRoleName, users?}` and show that list to the admin before the diff. A PDF that is not text-selectable cannot be parsed. Ask for a plain-text `Role: Parent` list.
46
+
47
+ Roles: exact `DeveloperName`, then case-insensitive `Name`. No fuzzy match. When more than one role matches, list each candidate's `DeveloperName` and `Id` and wait. Do not pick one. Unresolved names go back to step 0.
48
+
49
+ Users, only after reassignment was confirmed:
50
+
51
+ 1. 18-character id starting with `005` → `User.Id`
52
+ 2. Email → `User.Email`
53
+ 3. Username → `User.Username`
54
+ 4. Display name → `User.Name`, and only when exactly one active user matches
55
+
56
+ `IsActive = false` is a non-match. A user listed under two roles is a conflict. Ask which role that user should land under, or whether to drop the reassignment. Do not submit until the admin answers.
57
+
58
+ Stop on a cycle in the target graph. Report the path, for example `A → B → C → A`, and ask for a corrected artifact. Do not submit.
59
+
60
+ ### 3. Build the manifest
61
+
62
+ Each mutation has `operationId`, `operationType`, `dependsOnOperationIds`, and one nested payload. `dependsOnOperationIds` is the order that matters.
63
+
64
+ | operationType | Nested object | Use when |
65
+ |---|---|---|
66
+ | `CreateRole` | `createRole` | Role is in the artifact and not in the org. Set `roleReference`, `developerName`, `name`, and `parentRoleId` or `parentRoleReference`. Default the three account-owner access fields to the org defaults when the artifact omits them. |
67
+ | `ReparentRole` | `reparentRole` | Role exists and the parent differs. Set `targetRoleId` or `targetRoleReference`, `expectedParentRoleId`, and `desiredParentRoleId` or `desiredParentRoleReference`. |
68
+ | `RenameRole` | `renameRole` | Same role, different label or developer name. Set the expected and desired name fields. |
69
+ | `DeleteRole` | `deleteRole` | Admin asked to remove an empty role. Set `targetRoleId`, `expectedParentRoleId`, `expectedAssignedUserIds`, and `expectedDirectChildRoleIds`. |
70
+ | `AssignUser` or `MoveUser` | `userRoleAssignment` | Reassignment was confirmed. Set `userId`, `expectedCurrentRoleId`, and `desiredRoleId` or `desiredRoleReference`. |
71
+
72
+ `DeleteRole` applies only when the role has no direct children and no assigned users at the moment it runs. Reparent those children and move those users in earlier mutations, and put those `operationId`s in `dependsOnOperationIds`. The delete's expected user and child lists are then empty. If the admin declined reassignment, do not delete a role that still has users.
73
+
74
+ A mutation that names a role neither in the org nor created in this manifest is `missing-parent`. Name the roles that point at it. Ask whether to add a `CreateRole` for it in this manifest, skip those rows, or abort. Do not submit with that parent missing.
75
+
76
+ A cycle in `dependsOnOperationIds` blocks the submit. Give every new role a `roleReference` string and point parents and assignments at that string.
77
+
78
+ ### 4. Validate, then preview
79
+
80
+ Block the submit when any of these remain: a cycle, a missing parent, a duplicate `developerName`, a dependency cycle, an `AssignUser` or `MoveUser` without the step 0 yes, a `DeleteRole` whose expected user or child lists are not empty, or overlap under 20% without a confirmed greenfield replacement.
81
+
82
+ On a duplicate `developerName`, show both rows and wait until the admin picks one or renames one.
83
+
84
+ Warn in the preview, and continue only after an explicit yes:
85
+
86
+ - A changed role is referenced by `Territory2.UserRoleId` or a forecast hierarchy override.
87
+ - A changed role has `PortalType != 'None'`.
88
+ - A changed role has more than 500 users (`SELECT COUNT() FROM User WHERE UserRoleId = :id`).
89
+
90
+ ```text
91
+ Restructure preview
92
+ -------------------
93
+ ReparentRole : 42
94
+ CreateRole : 3
95
+ RenameRole : 1
96
+ DeleteRole : 2
97
+ MoveUser : 2
98
+
99
+ Territory / forecast references : 1
100
+ Portal roles : 0
101
+ Roles with more than 500 users : 2
102
+
103
+ Approve this restructure? [yes / no]
104
+ ```
105
+
106
+ `yes` submits. Anything else does not. Roles left in the org and absent from the artifact stay in place.
107
+
108
+ ### 5. Submit
109
+
110
+ ```text
111
+ POST /services/data/v{version}/sharing/role-hierarchy-restructure
112
+ {
113
+ "operation": "Save",
114
+ "mutations": [
115
+ {
116
+ "operationId": "reparent-sales-vp",
117
+ "operationType": "ReparentRole",
118
+ "dependsOnOperationIds": [],
119
+ "reparentRole": {
120
+ "targetRoleId": "00E000000000001",
121
+ "expectedParentRoleId": "00E000000000002",
122
+ "desiredParentRoleReference": "cro"
123
+ }
124
+ },
125
+ {
126
+ "operationId": "delete-legacy-region",
127
+ "operationType": "DeleteRole",
128
+ "dependsOnOperationIds": ["reparent-legacy-children"],
129
+ "deleteRole": {
130
+ "targetRoleId": "00E000000000003",
131
+ "expectedParentRoleId": "00E000000000002",
132
+ "expectedAssignedUserIds": [],
133
+ "expectedDirectChildRoleIds": []
134
+ }
135
+ }
136
+ ]
137
+ }
138
+ ```
139
+
140
+ `CreateRole`, `RenameRole`, `AssignUser`, and `MoveUser` use the same envelope with their nested object from step 3.
141
+
142
+ Send the approved manifest once. Do not edit `UserRole` records one by one.
143
+
144
+ ### 6. Read the response
145
+
146
+ - `Applied` — structural and sharing changes committed.
147
+ - `AppliedSharingPending` — hierarchy is live; sharing catches up on its own. Do not poll.
148
+ - `AsyncExecutionRequired` — the server queued the manifest. Do not poll.
149
+ - `RoleOperationInProgress` — another restructure is running. Stop. Do not queue the manifest. Ask the admin to retry once the other operation finishes.
150
+ - `NotApplied` — nothing committed. Show `reasonCodes` and stop.
151
+ - `404` on submit — API not enabled for this client tier. Halt, tell the admin, do not retry, do not fall back to per-record `/sobjects/UserRole` edits.
152
+
153
+ For each `operationResults[]` entry, `outcome` is `Applied`, `NotApplied`, or `DependencyNotApplied`. Show `reasonCode` for any entry that is not `Applied`. Do not retry and do not roll back.
154
+
155
+ ## Out of scope
156
+
157
+ - A single role create, rename, or reparent with no other changes, and any request that only asks which roles exist or how they are nested (`managing-roles`).
158
+ - Territory, account, and forecast hierarchies.
159
+ - Authoring sharing rules.
160
+ - Image-only PDFs. Ask for text.
161
+ - Rollback. Report what the response says was committed.
162
+ ---
163
+
164
+ <!-- skill-validate: ignore-start -->
165
+ <!-- codey:operations start -->
166
+ ## Operations Reference
167
+
168
+ Operations this skill uses — routing and dependency reference.
169
+
170
+ | Operation | Purpose | Status | Call | Depends on |
171
+ |-----------|---------|--------|------|------------|
172
+ | `read-role-hierarchy` | read | — | `GET /services/data/v68.0/query` | — |
173
+ | `count-users-per-role` | read | — | `GET /services/data/v68.0/query` | `read-role-hierarchy` |
174
+ | `submit-role-hierarchy-restructure` | write | — | `POST /services/data/v68.0/sharing/role-hierarchy-restructure` | `read-role-hierarchy` |
175
+ | `verify-role-hierarchy-restructure` | verify | — | `GET /services/data/v68.0/query` | `submit-role-hierarchy-restructure` |
176
+ <!-- codey:operations end -->
177
+ <!-- skill-validate: ignore-end -->