@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,471 +0,0 @@
1
- ---
2
- name: fsc-flexible-hierarchy-graph-config-create
3
- description: "Build and deploy a bespoke Flexible Hierarchy graph config as a `RelationshipGraphDefinition` MDAPI component — first ask whether the admin has a config, then either take an admin-supplied config as-is (Path A, name read from its `masterLabel`) or ask the name and construct the `graphDefinition` from scratch (Path B: root object, node objects, per-object graph/grid view fields, node relationships), confirm right before the deploy, then create it via MDAPI deploy and read back. Invoked from the fsc-flexible-hierarchy-configure foundation skill's hierarchy-type step to create the bespoke hierarchy config."
4
- metadata:
5
- relatedSkills:
6
- - fsc-flexible-hierarchy-configure
7
- version: "1.0"
8
- cliTools:
9
- - tool:
10
- - "sf"
11
- semver: ">=2.0.0"
12
- ---
13
-
14
- # Create a Bespoke Hierarchy Config
15
-
16
- The **Bespoke Configuration** branch of the hierarchy-type step (**Step 9**) of the
17
- [`fsc-flexible-hierarchy-configure`](../../../SKILL.md) foundation skill (see
18
- [`../foundation-configure/SKILL.md`](../foundation-configure/SKILL.md)). The foundation skill
19
- delegates here to build a **bespoke** hierarchy config — nodes and relations authored directly. This
20
- is the *only* path when the org's Rule-Based Hierarchy preference isn't on, and remains available
21
- even when it is (the admin can still choose Bespoke over Rule-Based at Step 9's modality gate).
22
- Authoring a **Rule-Based** config — the `rules.graph.rootNode` tree of role-based filters and
23
- automatic parent/child expansion — is out of scope for *this* skill; Step 9 delegates that to the
24
- sibling [`../fsc-flexible-hierarchy-rule-based-graph-config-create/SKILL.md`](../fsc-flexible-hierarchy-rule-based-graph-config-create/SKILL.md)
25
- sub-skill instead.
26
-
27
- ## Sequencing — one question at a time, never batch
28
-
29
- This skill is multi-turn: the Path A/B branch, the name, and the pre-deploy confirm are each their
30
- own turn. Ask **only the current question**, wait for the answer, then move on — **never bundle a
31
- later question (e.g. node objects, relationships, the pre-deploy confirm) into the same message as
32
- an earlier one, and never collect several answers up front.** This applies in full even if you're
33
- serving this skill directly rather than being routed here from the foundation skill.
34
-
35
- A hierarchy type is a **`RelationshipGraphDefinition`** metadata component — a deployable MDAPI type
36
- (`metadataApiName="RelationshipGraphDefinition"`, `manageable`, `keyPrefix="06J"`). **This skill always
37
- creates a brand-new record — never an update** (the `DeveloperName` uniqueness check above guarantees
38
- it), and creation for this type needs a different **verb** than the rest of this skill uses on the
39
- generic `/headless/metadata` facet. That facet's **PUT is update-only** for this type: PUT against a
40
- `DeveloperName` that doesn't exist yet returns 400 `INVALID_CROSS_REFERENCE_KEY` ("Component does not
41
- exist"), even with an otherwise-valid payload (confirmed against a live org — repeated identical
42
- retries fail the same way, ruling out transience or a stale partial-create). **POST is a working create
43
- transport in principle**, on either facet — confirmed `POST /services/data/v{version}.0/headless/metadata`
44
- (body `{type, fullName, xmlRep}`) returns 200 with the new record's id, and the Tooling API's
45
- generic-sObject POST is `createable: true` for this type via
46
- `GET .../tooling/sobjects/RelationshipGraphDefinition/describe`. **But for
47
- `GraphType: "FlexibleHierarchy"` specifically, the Tooling API POST is unreliable** — confirmed live
48
- failing 5+ identical retries with `INVALID_FIELD_FOR_INSERT_UPDATE` on `GraphType`, on an
49
- org where the Setup UI and an MDAPI deploy of the identical payload both succeeded immediately after.
50
- **Create it via MDAPI deploy instead:** `sf project deploy start --source-dir <path>` against a
51
- `relationshipGraphDefinitions/<DeveloperName>.relationshipGraphDefinition-meta.xml` component with the
52
- same field shape as JSON would carry, HTML-escaped into XML. **Deploy at the org's highest supported
53
- API version, not the CLI's/project's default** — confirmed live that an MDAPI deploy of this exact
54
- type can fail with the *same* `INVALID_FIELD_FOR_INSERT_UPDATE`-style "Looks like you don't have access
55
- to Graph Type FlexibleHierarchy" message purely from an API-version gap (deploying at v60 failed,
56
- identical payload at v67 — the org's own default — succeeded), even though the running user genuinely
57
- has access. So this error string alone doesn't prove a permission problem: before troubleshooting
58
- access/permission sets, check the org's max supported API version (e.g. `GET /services/data` for the
59
- version list, or the version a plain describe call resolves to) and pass it explicitly
60
- (`sf project deploy start --api-version <max>`, and/or bump `sourceApiVersion` in `sfdx-project.json`)
61
- rather than trusting whatever a scratch/default project scaffold ships with. See
62
- [`references/hierarchy-type-payload.md`](references/hierarchy-type-payload.md) for the exact shape and
63
- the full transport-failure writeup. Not a Java service call either way. There
64
- is no `FlexibleHierarchyType` sObject despite the `FlexibleHierarchySetup` Setup node's name; a
65
- `FlexibleHierarchy` instance's `HierarchyTypeReferenceId` is a lookup to this record — creating the
66
- actual `FlexibleHierarchy` instance is out of scope.
67
-
68
- ## Prerequisites (established by the foundation skill before delegating here)
69
-
70
- - FSC + ARC (Actionable Relationship Center) enabled on the org, with the running user able to
71
- access and modify ARC graphs, and the Flexible Hierarchies feature preference on —
72
- all confirmed in the foundation skill's earlier steps.
73
- - The record-page placement made in the foundation skill's record-page step (its Step 8), **if any**.
74
- This is context only — the config's root object does **not** have to match it. Step 8 is optional
75
- (placement may be skipped entirely) and multi-select (the component may go on several objects), so
76
- there's often no single record-page object to align to. Pick the hierarchy root independently from the
77
- supported objects (see below).
78
-
79
- ## Free-text inputs must use a real text prompt — never a fixed-option picker
80
-
81
- Several inputs in this skill are **open free-text**, not selections from a known set: the hierarchy-type
82
- name, the root object, the "any other node objects" list, and the graph/grid view fields' "Enter my
83
- own" escape. For every one of these, **ask a plain free-text question the admin types into** — do not
84
- render it through a mechanism that only offers fixed selectable options.
85
-
86
- **Tooling note (the trap that bit a real run):** if the only question mechanism available forces fixed
87
- selectable options with no real text field — e.g. an `AskUserQuestion`-style tool where free text
88
- arrives *only* via an auto-added "Other" — **do not use it for these inputs.** A label like "Type a
89
- name" or "Enter objects (comma-separated)" inside such a picker is a **dead option**: selecting it
90
- captures the literal string of the label, not what the admin meant to type, and there's nowhere to type
91
- it. Ask as a plain free-text turn and read the answer from the admin's reply. This applies to *every*
92
- free-text input below, not just one prompt.
93
-
94
- **Second tooling note (also bit a real run):** don't try to work around the dead-option trap above by
95
- calling an `AskUserQuestion`-style tool with a single placeholder option (e.g. one option reading "Type
96
- it below") just to get a required field past the tool's validation — the tool itself requires **≥2
97
- real, distinct options** and rejects a one-option call outright (`InputValidationError:
98
- [...] expected array to have >=2 items`). Don't retry by inventing a second filler option either; that
99
- just produces two meaningless choices for a question that has no fixed set of answers. For a genuinely
100
- open, no-default, no-fixed-set field, abandon the picker tool entirely and ask in plain text — same
101
- outcome as the first tooling note, reached from a different failed attempt.
102
-
103
- ## First ask: do you have a hierarchy config to deploy, or should I build one?
104
-
105
- **Ask this fork FIRST — before the name.** It decides the `graphDefinition` payload (the hard part of
106
- the component) and **determines whether you get interviewed for nodes and display fields.** It also
107
- governs whether the name even needs asking: a Path A config already carries its own `masterLabel`, so
108
- for a deploy of an existing config **you don't need to ask for a name separately** — you read it from
109
- the config (and only confirm it). Only Path B, where you build from scratch, has no name to read, so
110
- that's the branch that asks for one. Ask the fork as a **Yes/No choice the admin selects — not a
111
- free-text answer they type.** Present exactly two options (Yes / No); don't make them guess the
112
- wording:
113
-
114
- > Do you already have a hierarchy config ready to deploy?
115
- > - **Yes** — paste your `graphDefinition` JSON or full `RelationshipGraphDefinition` XML and I'll
116
- > deploy it as-is (I'll only validate the root object exists in the org — standard or custom — and
117
- > read the label).
118
- > - **No** — I'll build one with you: the root object, any other node objects, the graph/grid
119
- > display fields for each, and optional node relationships.
120
-
121
- Two paths follow from that answer:
122
-
123
- - **Path A — the admin brings a config.** If they hand you a `graphDefinition` JSON or a full
124
- `RelationshipGraphDefinition` MDAPI XML (like the sample in the reference), **use it as-is** —
125
- don't silently rewrite their node/relationship choices. Reconcile only the essentials: confirm its
126
- root object (`graph.rootNode.object.entity`) is a real entity in the org — **standard or custom**
127
- (validate it against the org's describe, not a fixed list); it does **not** need to match any Step 8
128
- record-page object (see Prerequisites),
129
- and **read the name from the config's own `masterLabel`** — **don't ask for a name separately on
130
- this path**; just echo the `masterLabel` you found and let them correct it if it's wrong. **Strip
131
- the invalid duplicate `flexibleHierarchy` block if present** (see the pitfall below). This is the
132
- preferred path when a config already exists.
133
- - **Path B — build it from scratch.** Only here do you construct the graph, and that means gathering
134
- **every field** from the admin — including the **name** (Path A read it from the config; Path B has
135
- none, so ask for it here):
136
-
137
- > What should the hierarchy type be called? (Required — there's no default.)
138
-
139
- The **name** becomes the component's `masterLabel` (and `DeveloperName`). **Ask it as an open,
140
- typed, free-text question — NOT a multiple-choice picker** (see the free-text-input rule hoisted at
141
- the top of this skill). There is no default hierarchy type and no suggested list, so you cannot offer
142
- options to select from: don't present a fixed choice (e.g. "Legal Entity") as option 1, don't
143
- pre-fill or default to any name, and — because the name is **required** — **do not offer a "Skip"
144
- option**. **Keep the prompt clean and do NOT improvise a suggested name from external or attached
145
- context** — do not mine the conversation, Downloads, an attached Apex script, an existing
146
- `RelationshipGraphDefinition` `DeveloperName`, or any other artifact to propose "something like
147
- `<X>`". Even a soft, "it's your call" suggestion biases the answer and leaks unrelated context into
148
- the prompt. Ask the bare open question — e.g. *"What should the hierarchy type be called? (Required —
149
- there's no default.)"* — and nothing more; let the admin supply the name unprompted.
150
-
151
- **`DeveloperName` must be unique — check for a collision and, if it exists, ask for another name.**
152
- The typed label becomes both `masterLabel` and `DeveloperName`, and `DeveloperName` derives by
153
- normalizing the label to a valid API name (spaces/punctuation → underscores, collapse repeats, strip
154
- leading/trailing and leading-digit issues — e.g. `Legal Hierarchy` → `Legal_Hierarchy`). Because the
155
- org **only accepts a unique `DeveloperName`** for `RelationshipGraphDefinition`, before building the
156
- payload **query the org for an existing record with that `DeveloperName`** —
157
- `SELECT Id, DeveloperName, MasterLabel FROM RelationshipGraphDefinition WHERE DeveloperName='<derived>'`.
158
- If a record already exists, **do not overwrite it and do not silently append a suffix** — tell the
159
- admin the name is already taken and **ask for a different name**, then re-derive and re-check, looping
160
- until the `DeveloperName` is free. Word it plainly — e.g. *"A hierarchy type with the API name
161
- `<derived>` already exists. Please choose a different name."* Only proceed to build the payload once
162
- the derived `DeveloperName` is confirmed unique. **Do not ask for a description, and do not emit a `<description>` element**;
163
- `RelationshipGraphDefinition` does **not** accept `<description>` — deploying one fails dry-run with
164
- `Element ...description invalid at this location in type RelationshipGraphDefinition` (confirmed against a live org).
165
-
166
- **Ask whether to save this as a reusable template — a real field, unlike description:**
167
-
168
- > Do you want to save this as a reusable template? (yes / no — defaults to no if skipped)
169
-
170
- Set `isTemplate` to `true` only if the admin opts in; leave it `false` (the default) on "no" or on
171
- no answer. This is optional and skippable — don't block on it or re-ask if declined. Then construct
172
- the graph. Ask for the root object **as typed free-text, not multiple-choice**:
173
- > Which object should be the root object? Enter the object API name — e.g. `Account` or
174
- > `My_Object__c`.
175
- → `graph.rootNode.object.entity`. **Validate that the typed object actually exists in the org —
176
- standard or custom.** Common choices are standard objects like Account, Contact, FinancialAccount,
177
- PartyRelationshipGroup, Opportunity, Case, BranchUnit, FinancialDeal, Product2, InsurancePolicy, or
178
- Lead, but **custom objects (anything ending in `__c`) are fully supported too** — don't reject an
179
- object just because it's custom or isn't in that common set. Confirm it against the org's schema
180
- (e.g. an `EntityDefinition` query or describe); if it doesn't exist in the org, **tell the admin no
181
- such object exists and ask them to enter another** — don't silently accept or drop it. The root is
182
- validated **by existence in the org only** — it does **not** have to match any object chosen for
183
- Step 8 record-page placement (which is optional and multi-select).
184
- Build one `nodeList` entry per object, **handling each object's fields right after it's chosen**
185
- rather than collecting all objects first. Start with the **root object** (already chosen above),
186
- then ask for the other node objects **as typed free-text, not multiple-choice** — phrase it around
187
- the chosen root, e.g.:
188
- > Any other node objects besides `<root object>`? Enter the object API names, comma-separated —
189
- > or leave it blank / say "none" if there aren't any.
190
- This is **skippable**: a blank / "none" answer means `nodeList` holds just the root object's entry
191
- (a valid single-object hierarchy). **Validate each typed object against the org's schema — standard
192
- or custom** (split on commas, trim, and confirm each exists via `EntityDefinition`/describe).
193
- Standard objects like Account, Contact, FinancialAccount, PartyRelationshipGroup, Opportunity, Case,
194
- BranchUnit, FinancialDeal, Product2, InsurancePolicy, and Lead are the common choices, but **custom
195
- objects (`__c`) are fully supported** — never reject one just for being custom. **Reject and re-ask
196
- anything that doesn't exist in the org** (report which one); don't silently drop it.
197
- For the root object, and then for **each** node object as it's selected, gather that object's
198
- display fields → `graphViewFields` + `gridViewFields` for its `nodeList` entry (`entityApiName`,
199
- `graphViewFields`, `gridViewFields`).
200
- **Ask the graph-view and grid-view fields as TWO SEPARATE questions** — the two lists can differ,
201
- so don't fold them into one prompt.
202
-
203
- **Present each as a real interactive multi-select picker, NOT a static markdown list and NOT bare
204
- free-text — and never fold the "any other fields" escape into the picker itself.** You already have
205
- to `describe` the object to validate the fields (below), so use that same describe to *offer* fields
206
- as genuine selectable options (e.g. via the host's actual multi-select question tool) instead of
207
- dumping a list of field names as text or making the admin recall API names cold. Because an object
208
- can have dozens/hundreds of fields — including **custom** ones — you can't list them all, so build
209
- the picker like this, **identically for every node — the root object and every other node object
210
- alike**:
211
- - Offer exactly **3 shortlisted fields** — the object's own likely display fields pulled from the
212
- describe (common, human-meaningful fields for that object — e.g. for Account: `Industry`, `Type`,
213
- `AnnualRevenue`; for Contact: `Title`, `Department`, `Email`) — as the picker's selectable options.
214
- On a **custom object** the shortlist is built the same way from *its* describe (its own `__c`
215
- fields are perfectly valid display fields — surface the meaningful ones rather than leaving the
216
- shortlist empty).
217
- - **Do not add an "Enter my own" option inside the picker.** A picker option that's really an
218
- invitation to type free text is a *dead option* — the exact anti-pattern the free-text-input rule
219
- at the top of this skill already forbids (selecting it captures the literal label, not what the
220
- admin meant to type). Instead, **immediately after the picker answer comes back, ask a separate,
221
- genuine free-text follow-up**: *"Any other fields for the `<view>` view on `<object>`? Enter API
222
- names, comma-separated, or say none."* This is what keeps custom and related fields (`My_Field__c`,
223
- `Owner.Name`, `My_Lookup__r.Name`) reachable without turning the picker into a dead-option trap.
224
- **Custom fields are fully supported in both the graph view and the grid view, for the root object
225
- and every other node** — validate them against the describe exactly like standard fields (see
226
- below); never reject a field just because it's custom.
227
-
228
- For the **graph view**, present the picker as a **multi-select over the 3 shortlisted fields, capped
229
- at 2 picks** (the Name field always shows automatically, so the card holds Name + up to 2 more = 3
230
- total):
231
- > **Graph view — `<object>` (pick up to 2; Name always shows automatically):**
232
- > - `<shortlisted field 1>`
233
- > - `<shortlisted field 2>`
234
- > - `<shortlisted field 3>`
235
-
236
- Then, as its own separate turn: *"Any other fields for the graph view on `<object>`? Enter API
237
- names, comma-separated, or say none."*
238
-
239
- For the **grid view**, present the **same 3-option multi-select picker — same shortlist — but with
240
- NO cap** (pick as many of the 3 as they want). This list can differ from the graph view, so ask it as
241
- its own distinct question:
242
- > **Grid view — `<object>` (pick as many as you want):**
243
- > - `<shortlisted field 1>`
244
- > - `<shortlisted field 2>`
245
- > - `<shortlisted field 3>`
246
-
247
- Then, as its own separate turn: *"Any other fields for the grid view on `<object>`? Enter API names,
248
- comma-separated, or say none."*
249
-
250
- **Graph-view hard cap: at most 2 fields in `graphViewFields`.** The Name field is carried
251
- separately in `nameField` and always renders, so the graph card shows Name + up to 2 more (3 total).
252
- If the admin types more than 2 for the graph view, **warn them that the graph is limited to 2 (plus
253
- the auto-shown Name), show the first 2 you would keep as the default, and ask whether they want to
254
- change the selection** rather than silently proceeding. Phrase it as a proceed-or-modify prompt —
255
- e.g. *"Heads-up: the graph view is capped at 2 fields (plus Name, which always shows). You picked
256
- `<N>`, so I'll go with `<field 1>` and `<field 2>` and drop `<the rest>`. Keep these two, or pick a
257
- different two?"* — and **default to proceeding with those first 2**; only re-collect if the admin
258
- says they want to change it. Never silently truncate without this warning, and never re-collect
259
- without offering the keep-these default. If they include the Name field itself among the 2, it lives
260
- in `nameField`, so don't count or duplicate it.
261
- **The grid view has no such limit** — `gridViewFields` can hold as many as they want.
262
- `nameField` is **mandatory on every node and set automatically** from the object's standard name
263
- field (`Name`, or `CaseNumber` for Case) — don't ask for it; if the admin also lists the name field
264
- among their view fields, keep it in `nameField` and don't duplicate it.
265
- `showRelatedContacts` is **asked only for the `Account` object** ("Should Account nodes show
266
- related contacts?"); for every other object don't ask — default it to `false`.
267
- **Validate every typed field against that object's live schema before deploying — this is
268
- mandatory, not optional, precisely because the input is free-text.** Describe the object (e.g. `sf
269
- sobject describe` / `EntityDefinition` + `FieldDefinition`) and confirm each named field actually
270
- exists on it. Fields may be:
271
- - **direct standard** — `Name`, `Industry`, `AnnualRevenue`;
272
- - **custom** — anything ending in `__c` (e.g. `My_Custom_Field__c`). **Custom fields are fully
273
- supported** — validate them against the describe exactly like standard fields; never reject a
274
- field just because it's custom;
275
- - **dotted relationship paths** — standard (`Owner.Name`, `Account.AccountNumber`) **or custom
276
- relationships** ending in `__r` (e.g. `My_Lookup__r.Name`). Resolve a dotted path by traversing
277
- the relationship: confirm the relationship (`Owner` / `Account` / `My_Lookup__r`) exists on the
278
- starting object, then confirm the trailing field exists on the related object.
279
-
280
- **Normalize the self-object prefix — don't reject it.** Admins frequently type a field on the
281
- node object *itself* with the object name prefixed, e.g. `Account.Type` while configuring the
282
- `Account` node, or `Case.CreatedDate` on the `Case` node. That's not a relationship path — it's the
283
- object's own `Type`/`CreatedDate` field. **When the leading segment equals the node object's own
284
- API name, strip it** and validate/emit the bare field (`Account.Type` → `Type`); mention that you
285
- normalized it. Only treat a dotted path as a real relationship traversal when the leading segment is
286
- a *relationship* on the object (`Owner`, `Account` on Contact, a `__r`), not the object's own name.
287
- Split the comma-separated input, trim each entry, and validate each one. **Reject and re-ask any
288
- field that doesn't resolve** (report which one and why — "no such field `Foo` on `Account`"); don't
289
- silently drop it and don't deploy a config containing an unvalidated field. Echo back the validated
290
- field list before building the payload. Then ask **"Do you want to define node relationships? (Skip if not.)"** —
291
- **opt-in and skippable**: if the admin declines, `relationshipList` stays empty `[]` (the common
292
- case). **The ASK itself is not optional — it must be its own standalone message with an explicit
293
- answer, never inferred from silence or from moving on to the next topic.** Confirmed live: a run
294
- built the node list and display fields, then moved straight into the next phase without ever asking
295
- this question at all — that is not the same as the admin declining, and `relationshipList` being
296
- empty because of it is a bug, not the documented common case. Only if they opt in, gather **each
297
- relationship** through six questions — **present every one as a multiple-choice question so the
298
- admin can only pick a legal value, never free-text**:
299
- - **Parent Node Object** → `parentNodeEntityApiName`. **Choices = the objects already in
300
- `nodeList`** (the root + node objects chosen above) — not the full supported-object set.
301
- - **Child Node Object** → `childNodeEntityApiName`. **Choices = the objects already in `nodeList`.**
302
- - **Junction Object** → `junctionObjectProperties.junctionEntityApiName`. **First check whether any
303
- real junction is even available before offering this path.** A valid junction is an object the
304
- user can read that carries lookup fields pointing at **both** the chosen Parent Node Object **and**
305
- the chosen Child Node Object — nothing else can serve as a junction. So, once parent and child are
306
- picked, query the org's accessible entities and their lookup fields (e.g. `EntityDefinition` +
307
- `FieldDefinition`/describe, filtering `ReferenceTo` for the parent and child objects) and build the
308
- candidate list from only the objects that have **both** required lookups. **Choices = that
309
- computed candidate list**, not the full set of readable objects. **Filter `ReferenceTo`
310
- client-side, not via a SOQL WHERE-clause operator** — `contains`/`LIKE`/`INCLUDES` are not
311
- confirmed to work against this field; fetch the describe/query results and check each field's
312
- `ReferenceTo` list in code instead. This is one instance of a general rule for every filter this
313
- skill builds: only use an operator that's actually confirmed for that field's datatype — for the
314
- plain string/id fields these steps otherwise filter on (e.g. the `DeveloperName` uniqueness check),
315
- that means `=`/`!=` (eq/ne) only. If a filter you need isn't confirmed-safe for a field's datatype,
316
- that's a validation error — stop before firing the query and tell the admin what's blocked, rather
317
- than guessing at an operator and reporting whatever error the org returns.
318
- - **If one or more junction candidates exist:** ask the Junction Object question (multiple-choice
319
- over the candidates), then its three field questions below.
320
- - **If NO object qualifies:** the relationship **cannot be added by default** — a junction object
321
- is required, so without one there is no legal relationship to capture. Do **not** fall through
322
- to a direct parent→child relationship, and **do not offer to create a new custom junction
323
- object** — building supporting metadata (new custom objects/fields) is out of scope for this
324
- skill entirely; never present "create a new object" as an option, on this or any other path.
325
- **Tell the admin why the relationship can't be added** — e.g. *"No junction object is available
326
- for `<Parent>` → `<Child>` (no object you can access has lookup fields to both), so this
327
- relationship can't be added."* — then give them exactly one recovery option: **name an existing
328
- object** they believe qualifies, as typed free-text (e.g. *"If you know of an existing object
329
- with lookups to both `<Parent>` and `<Child>`, you can type its API name — otherwise I'll drop
330
- this relationship."*). Validate whatever they type the same way as the automated scan (must
331
- carry lookups to both the parent and child); if it validates, treat it as the chosen junction and
332
- continue to the three junction-field questions; if it doesn't validate, explain why (e.g. "no
333
- lookup to `<Child>` on that object") and drop the relationship. If the admin has no such object,
334
- offer to capture a **different** parent/child pair or finish (`relationshipList` may stay empty
335
- `[]` if no pair has a junction). Don't silently omit any of this; state the reason so the admin
336
- understands the junction path was checked and ruled out, not forgotten.
337
- - **Parent Lookup field** → `junctionObjectProperties.parentFieldApiName` (choices = lookup fields
338
- on the chosen junction object that reference the Parent Node Object). **State the direction in the
339
- prompt so the admin can't pick it backwards:** the *parent lookup* is the junction field pointing
340
- at the **parent (higher) node** — the one whose children you're expanding. The graph expands a node
341
- N by finding junction rows where `parentFieldApiName = N.Id` and reading each child from
342
- `childFieldApiName`, so **reversing these two inverts the entire tree** (parents render as
343
- children). *Only asked when a junction was available and chosen.*
344
- - **Child Lookup field** → `junctionObjectProperties.childFieldApiName` (choices = lookup fields on
345
- the junction object that reference the Child Node Object). The *child lookup* points at the
346
- **child (lower) node**. *Only asked when a junction was available and chosen.*
347
- - **⚠️ Self-referential junctions (both lookups reference the SAME node object) — recommend the
348
- correct direction, don't leave it to a coin-flip.** When the parent and child node are the same
349
- object (e.g. an Account→Account hierarchy via `AccountAccountRelation`, whose `AccountId` and
350
- `RelatedAccountId` both look up to `Account`), "which lookup is the parent" is genuinely ambiguous
351
- and easy to reverse — a real run picked it backwards and produced an inverted tree. For these,
352
- surface the FSC convention as the **recommended default** (still overridable): for
353
- `AccountAccountRelation`, **parent = `AccountId`, child = `RelatedAccountId`**. This is grounded —
354
- it's what the FSC "create hierarchy type" UI generates, and it matches the `HierarchyType`
355
- picklist's `Child` semantics (a record `{Account, RelatedAccount, HierarchyType=Child}` means the
356
- RelatedAccount is a child of the Account). Present it as *"Parent lookup — recommended `AccountId`
357
- (the FSC default for Account hierarchies)"*, not as an unlabeled equal choice.
358
- - **Relationship name field** → `junctionObjectProperties.titleFieldApiName` (choices = **text
359
- (`string`/`textarea`) and picklist fields** on the junction object). **Always ask this — present
360
- the picker; never silently default it to `Name`.** The org accepts a text OR a picklist field here
361
- and **rejects reference/lookup, date, and other types** with `INVALID_FIELD_FOR_INSERT_UPDATE`
362
- *"Specify a text field for Relationship Name Field"* (grounded via live Tooling-API creates on
363
- `AccountAccountRelation`: `Name`/string ✅ and `HierarchyType`/picklist ✅ both created;
364
- `RelatedAccountId`/reference ❌ and `EndDate`/date ❌ both rejected with that error). So build the
365
- choice list from the junction object's describe **filtered to `string`/`textarea`/`picklist`
366
- fields**, and never surface reference, date, number, or boolean fields as options.
367
- **⚠️ Do NOT mirror the FSC UI's own "Relationship Name" dropdown — it is broader than what actually
368
- deploys.** That UI dropdown also lists the junction's reference/lookup fields (on
369
- `AccountAccountRelation` it shows Account, Related Account, Party Role Relationship, Related Inverse
370
- Account alongside the text/picklist fields), but selecting one of those fails the create — the UI is
371
- permissive, the create is not (the "a deploy result can lie" discipline, inverted). Offer only the
372
- string/textarea/picklist fields. *Only asked when a junction was available and chosen.*
373
-
374
- **A junction object is required for every relationship** — there is no direct-lookup fallback. If no
375
- qualifying junction exists for the chosen parent/child pair, the relationship can't be added (see the
376
- "If NO object qualifies" branch above); emit a `relationshipList` entry **only** when a junction was
377
- available and chosen, carrying `parentNodeEntityApiName` + `childNodeEntityApiName` +
378
- `junctionObjectProperties`.
379
- **Validation (baked into the choice lists — don't relax it):** parent and child **must be objects
380
- already in `nodeList`**; the junction **must be one the user has access to AND carry lookups to both
381
- the parent and child** (the junction option is only offered when at least one such object exists —
382
- see the pre-check above); the three junction fields must exist on the chosen junction object — and
383
- the **relationship name field (`titleFieldApiName`) must be a *text* (`string`/`textarea`) or
384
- *picklist* field** (the org rejects reference/lookup, date, number, etc. with "Specify a text field
385
- for Relationship Name Field" — grounded by live creates: string ✅, picklist ✅, reference ❌, date ❌),
386
- so its choice list is pre-filtered to string/textarea/picklist fields; note the FSC UI dropdown is
387
- more permissive than the create (it lists lookup fields too), so don't copy the UI's reference entries. `summaryRollupList` is emitted as an empty array
388
- `[]` in the payload (rollup is out of scope) — but it is **internal wire plumbing only: never ask
389
- about it, never offer it, and never show it when echoing/summarizing the config back to the admin.**
390
- The admin can't add rollups here, so surfacing an empty `summaryRollupList: []` only confuses them;
391
- keep it in the deployed JSON, keep it out of everything the user sees. **Don't reconstruct the shape
392
- from memory — pattern-match the validated example and the full
393
- per-field input checklist in [`references/hierarchy-type-payload.md`](references/hierarchy-type-payload.md).**
394
-
395
- **Loop — after each relationship, ask if they want to capture another.** As soon as one relationship
396
- is fully captured (parent/child + the junction details), append it to `relationshipList`,
397
- echo back the relationship you just recorded, and ask:
398
-
399
- > **Captured: `<Parent>` → `<Child>` (junction via `<Junction>`).**
400
- > Do you want to capture another node relationship? (Say "no" / "done" to finish.)
401
-
402
- Keep looping through the six-question capture for each "yes"; stop only when the admin says no/done.
403
- Don't assume a single relationship is the whole set, and don't ask for all relationships in one
404
- prompt — capture one, confirm it, then offer to add more.
405
-
406
- ## ⚠️ Pitfall (both paths): the `flexibleHierarchy` block belongs ONLY under `graph.globalUiConfig`
407
-
408
- The `graph` object allows exactly `rootNode` + `globalUiConfig` (`additionalProperties: false`); a
409
- `flexibleHierarchy` copy placed as a sibling at the graph root is schema-invalid and trips Jackson's
410
- `FAIL_ON_UNKNOWN_PROPERTIES`. Some exported/hand-authored configs carry this redundant top-level copy
411
- — strip it before deploying.
412
-
413
- ## Defaults that don't need to be asked
414
-
415
- `isActive` = `true` (the type goes live immediately), and `graphType` = the fixed constant
416
- `FlexibleHierarchy`. The component's `RootObject` field is system-derived from
417
- `rootNode.object.entity` — never set it directly. `isTemplate` is the one exception in this
418
- section — it's asked (see the template question above), defaulting to `false` only when skipped or
419
- declined, not asked-and-answered.
420
-
421
- ## Deploy + verify
422
-
423
- **Confirm right before the deploy — one explicit go-ahead immediately before the write.** Once the
424
- component is assembled (Path A's reconciled config or Path B's built graph), show the admin what's
425
- about to be deployed — the hierarchy-type name (`masterLabel`) and root object — and ask for a
426
- go-ahead just before deploying:
427
-
428
- > Ready to deploy the `<name>` hierarchy type (root object `<object>`). Deploy it now? (yes / no)
429
-
430
- Deploy only on *yes*. This confirm is **specific to this final write** — it's the one gate in Step 9,
431
- placed immediately before the `RelationshipGraphDefinition` deploy, not a re-confirmation of the name
432
- or config questions already answered above. (Don't surface `summaryRollupList` or other internal wire
433
- plumbing in this summary — name + root object is what the admin decides on.)
434
-
435
- On *yes*, create the component via **MDAPI deploy** (`sf project deploy start --source-dir <path>
436
- --api-version <org's max>`) against a
437
- `relationshipGraphDefinitions/<DeveloperName>.relationshipGraphDefinition-meta.xml`
438
- component — **not** the Tooling API POST, which fails unreliably for `GraphType: "FlexibleHierarchy"`
439
- (see the transport note above). Don't PUT either (that facet's PUT is update-only for this type and
440
- 400s on a genuinely new `DeveloperName`). **Always deploy at the org's highest supported API version**
441
- — see the transport note above for why a lower/default version can produce the same
442
- "don't have access to Graph Type FlexibleHierarchy" error as a genuine permission gap. Then read back to confirm the record exists. **Read back
443
- with queryable columns only:**
444
- `RelationshipGraphDefinition` exposes just `Id`, `IsDeleted`, `DeveloperName`, `Language`,
445
- `MasterLabel`, `NamespacePrefix`, and the audit fields — **`GraphType`, `RootObject`, and `IsActive`
446
- are NOT queryable** (they live inside `relationshipGraphDefVersions`/`graphDefinition`) and a
447
- `SELECT`/`WHERE` on them fails with `INVALID_FIELD` (confirmed against a live org). Use
448
- `SELECT Id, DeveloperName, MasterLabel FROM RelationshipGraphDefinition WHERE DeveloperName='<Name>'`.
449
- ([Help: create hierarchy types](https://help.salesforce.com/s/articleView?id=ind.fsc_flexible_hierarchies_create_hierarchy_types.htm))
450
-
451
- ## End state
452
-
453
- A `RelationshipGraphDefinition` component for the confirmed hierarchy type (from the admin's own
454
- config or one built with them) created via MDAPI deploy and confirmed present by read-back.
455
-
456
- <!-- skill-validate: ignore-start -->
457
- <!-- codey:operations start -->
458
- ## Operations Reference
459
-
460
- Operations this skill uses — routing and dependency reference.
461
-
462
- | Operation | Purpose | Status | Call | Depends on |
463
- |-----------|---------|--------|------|------------|
464
- | `step-1-validate-root-object` | discovery | — | `GET /services/data/v66.0/sobjects/EntityDefinition/describe` | — |
465
- | `step-2-check-developer-name-uniqueness` | discovery | — | `GET /services/data/v66.0/query` | `step-1-validate-root-object` |
466
- | `step-3-validate-node-objects-and-fields` | discovery | — | `GET /services/data/v66.0/sobjects/{object}/describe` | `step-1-validate-root-object` |
467
- | `step-4-resolve-junction-candidates` | discovery | — | `GET /services/data/v66.0/query` | `step-3-validate-node-objects-and-fields` |
468
- | `step-5-deploy-relationship-graph-definition` | write | — | `/headless/metadata` | `step-2-check-developer-name-uniqueness`, `step-3-validate-node-objects-and-fields`, `step-4-resolve-junction-candidates` |
469
- | `step-6-verify-relationship-graph-definition` | verify | — | `GET /services/data/v66.0/query` | `step-5-deploy-relationship-graph-definition` |
470
- <!-- codey:operations end -->
471
- <!-- skill-validate: ignore-end -->