@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,429 +0,0 @@
1
- ---
2
- name: fsc-flexible-hierarchy-rule-based-graph-deploy
3
- description: "Build and deploy a Rule-Based Flexible Hierarchy graph config as a `RelationshipGraphDefinition` MDAPI component — same nodeList/relationshipList capture as the bespoke sub-skill, captured up front, plus a `rules.graph.rootNode` recursive rule tree (role, filter criteria, OneToMany/ManyToMany child relationships) that drives automatic hierarchy expansion and reuses those pre-captured relationships wherever an edge needs a junction. First ask whether the admin has a config, then either take an admin-supplied config as-is (Path A) or build the node list, the node relationships, and the rule tree with them in that order (Path B), 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 (Step 9) only when the admin has `enableRuleBasedHierarchyPref` on and chose Rule-Based Configuration over Bespoke Configuration."
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 Rule-Based Hierarchy Config
15
-
16
- The **Rule-Based** 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)). Step 9 delegates here
19
- **only when** `rule_based_pref_state` is `already-on` or `enabled` **and** the admin picked
20
- **Rule Based Configuration** at the modality question — never unconditionally. The sibling
21
- [`../graph-config-create/SKILL.md`](../graph-config-create/SKILL.md) remains the **only** path when
22
- the admin picks Bespoke Configuration, or when the Rule-Based preference isn't on; it is unchanged
23
- by this skill's existence.
24
-
25
- ## Sequencing — one question at a time, never batch
26
-
27
- This skill is multi-turn: the Path A/B branch, the node list, the node relationships, the rule
28
- tree, and the pre-deploy confirm are each their own turn. Ask **only the current question**, wait
29
- for the answer, then move on — **never bundle a later question into the same message as an
30
- earlier one, and never collect several answers up front.** This applies in full even if you're
31
- serving this skill directly rather than being routed here from the foundation skill.
32
-
33
- A hierarchy type is still a single **`RelationshipGraphDefinition`** metadata component — same
34
- deployable MDAPI type (`metadataApiName="RelationshipGraphDefinition"`, `manageable`,
35
- `keyPrefix="06J"`), same **create-only** rule (never an update), and the **same transport** as the
36
- bespoke sub-skill: creation is not supported through the generic `/headless/metadata` facet (its PUT
37
- is update-only for this type and 400s with `INVALID_CROSS_REFERENCE_KEY` against a `DeveloperName`
38
- that doesn't exist yet). **Create it via the raw Metadata API (mdapi package + SOAP deploy)** —
39
- route this through `/headless/metadata`, which wraps that raw-MDAPI create path — against a
40
- `relationshipGraphDefinitions/<DeveloperName>.relationshipGraphDefinition-meta.xml` component — **not**
41
- the Tooling API POST create, which is unreliable for `GraphType: "FlexibleHierarchy"` (confirmed
42
- against a live org: 5+ identical retries failed with `INVALID_FIELD_FOR_INSERT_UPDATE` on `GraphType`,
43
- while the Setup UI and an MDAPI deploy of the identical payload both succeeded). What's different from
44
- the bespoke
45
- sub-skill is **only the shape of the `graphDefinition` JSON inside `relationshipGraphDefVersions`** —
46
- it carries an additional `rules` block beside `nodeList`/`relationshipList`/`summaryRollupList`. See
47
- [`references/rule-based-hierarchy-payload.md`](references/rule-based-hierarchy-payload.md) for the
48
- full schema, grounding, and a validated example.
49
-
50
- ## Grounding note — read before using this skill
51
-
52
- This sub-skill's payload schema is grounded in **one admin-provided sample config** (a
53
- `RelationshipGraphDefinition` for a "Distribution Network Hierarchy") **plus two independent live
54
- build-from-scratch create + re-retrieve runs against a live org** — this skill's own three-level
55
- Account→Account→Contact rule tree, and an admin's independently UI-built rule tree captured in the
56
- same session. The **node/edge/filter shape** is now solidly grounded by two independent live builds,
57
- not just the one sample. The **transport is not uniformly solid**:
58
- `FullName`/`Metadata` shape and create-only are confirmed, but **Tooling API POST create fails
59
- reliably for `GraphType: "FlexibleHierarchy"`** (5+ identical retries, `INVALID_FIELD_FOR_INSERT_UPDATE`
60
- on `GraphType`) —
61
- MDAPI deploy is the transport that actually works; see the intro above. Everything about
62
- the **`rules` tree's contents** still being refined (any `operator` beyond `gt`/`lt`/`eq`/inferred
63
- `ne`, any `whichEntity` value beyond `TARGET`) is inferred and **not yet confirmed against a live
64
- deploy**. Treat the fields documented in the reference as grounded up to the point noted there, not as
65
- an exhaustively validated schema — if a live deploy of a built-from-scratch config fails, that's new
66
- grounding to fold back into the reference (per this skill family's "a deploy result can lie, always
67
- re-read/re-verify" discipline), not a sign to silently guess around it.
68
-
69
- ## Prerequisites (established by the foundation skill before delegating here)
70
-
71
- Same as [`../graph-config-create/SKILL.md`](../graph-config-create/SKILL.md)'s prerequisites — FSC +
72
- ARC enabled, Flexible Hierarchies feature preference on — **plus** `enableRuleBasedHierarchyPref`
73
- confirmed on (`rule_based_pref_state` is `already-on` or `enabled`). Step 9 verifies this gate before
74
- ever offering the Rule Based Configuration option; this sub-skill doesn't re-check it.
75
-
76
- ## Free-text vs. multiple-choice inputs — same discipline as the bespoke sub-skill
77
-
78
- Every free-text-vs-picker rule in
79
- [`../graph-config-create/SKILL.md`](../graph-config-create/SKILL.md#free-text-inputs-must-use-a-real-text-prompt--never-a-fixed-option-picker)
80
- applies here unchanged: name, root object, other node objects, and any "enter my own" escape are real
81
- free-text prompts, never a fixed-option picker with a dead "type your own" option. The new rule-tree
82
- inputs below extend this the same way — **filter value** is free-text; **operator** and
83
- **whichEntity** are multiple-choice over a known, finite set. **Relationship kind
84
- (OneToMany/ManyToMany)** is conditional, not always a two-option picker: it's multiple-choice only
85
- when a `relationshipList` entry already exists for the current node pair (captured in Path B step
86
- 2, before the tree) — otherwise the question is skipped entirely and One-to-many is used, since
87
- there's no captured junction to offer as the Many-to-many option (see "Child relationships" under
88
- "Building the rule tree"). **Role** is conditional on the org's configured `FlexibleHierarchyNodeRole`
89
- values — see "Checking configured roles" at the top of "Building the rule tree" below — free-text
90
- only when the org has none configured.
91
-
92
- ## First ask: do you have a hierarchy config to deploy, or should I build one?
93
-
94
- Ask the identical Yes/No fork the bespoke sub-skill asks, just naming the rule-based shape:
95
-
96
- > Do you already have a Rule-Based hierarchy config ready to deploy?
97
- > - **Yes** — paste your full config (the `graphDefinition` JSON or full `RelationshipGraphDefinition`
98
- > XML, including the `rules` block) and I'll deploy it as-is (I'll validate the root object and
99
- > every object named in the rule tree exists in the org, and read the label).
100
- > - **No** — I'll build one with you: the node objects and display fields (same as a bespoke config),
101
- > then the relationships connecting them, then the rule tree (role, qualifying filters, and child
102
- > relationships) that drives automatic hierarchy expansion.
103
-
104
- **Do not skip this and present a build summary (developer name, label, root object, node roles)
105
- before asking it and getting an answer.** Confirmed live: a run jumped straight to a deploy summary
106
- with invented values (e.g. assuming `Account` as root, inventing a developer name) without ever
107
- asking this question. If you find yourself describing field values for this hierarchy type before
108
- this question has been asked and answered, stop and ask it now.
109
-
110
- ### Path A — the admin brings a config
111
-
112
- Take it as-is — don't silently rewrite their node/rule choices. Reconcile only the essentials:
113
-
114
- - **Read the name from the config's own `masterLabel`** — don't ask for a name separately; echo it
115
- back and let the admin correct it if wrong.
116
- - **Confirm the root object** (`graph.rootNode.object.entity`) exists in the org — standard or
117
- custom — via describe/`EntityDefinition`, same as the bespoke path.
118
- - **Confirm every object named inside the `rules.graph.rootNode` tree** — every `object.entity` at
119
- every depth, plus every `junctionObject.entity` on a `ManyToMany` edge — exists in the org. A rule
120
- tree can reference deeper/more objects than the flat `nodeList`; validate the tree's objects
121
- independently, don't assume they're a subset of `nodeList`.
122
- - **Strip the duplicate `flexibleHierarchy` block if present** — see the Pitfall below. A real
123
- admin-provided sample carried the *entire* `nodeList`/`rules`/`relationshipList`/`summaryRollupList`
124
- content twice as two sibling `"flexibleHierarchy"` keys inside `globalUiConfig` (a paste artifact);
125
- keep exactly one.
126
- - **Don't drop or rebuild `relationshipList`.** A rule-based config still carries the flat
127
- `relationshipList[]` the bespoke config uses — for every `ManyToMany` edge in the rule tree, the
128
- matching junction pair should also appear once in `relationshipList` (see "Node relationships" in
129
- Path B below for what a well-formed entry looks like). Take the admin's own `relationshipList` as
130
- given on this path; don't regenerate it from the rule tree unless they ask you to fix a mismatch.
131
-
132
- ### Path B — build it from scratch
133
-
134
- Building a rule-based config from scratch is **three layers**, done in order:
135
-
136
- 1. **The node list and display config** — identical to the bespoke sub-skill's Path B, steps for
137
- name/`DeveloperName` uniqueness check, the reusable-template ask (`isTemplate` — optional,
138
- defaults to `false` if skipped), root object, other node objects, and per-object
139
- `graphViewFields`/`gridViewFields`/`nameField`/`showRelatedContacts` (the picker + free-text
140
- follow-up, the graph-view 2-field cap, the self-object-prefix normalization, the field validation
141
- against live describe). **This step delegates to the sibling sub-skill's own SOR — not a
142
- repo-relative file link, which a served SOR consumer cannot resolve:**
143
- **`delegates_to: fsc-darksaber/fsc-flexible-hierarchy-configure-graph-config-create`**. Call
144
- `describe("fsc-darksaber/fsc-flexible-hierarchy-configure-graph-config-create")` and follow its
145
- Path B node-list/display-field flow exactly (the wording lives there, not repeated here, so the
146
- two copies can't drift). The result is the same `nodeList[]` a bespoke config has.
147
- 2. **Node relationships (`relationshipList`)** — capture this now, **before** the rule tree, not
148
- derived from it afterward. Continue following the same delegated sub-skill's flow into its
149
- node-relationship capture step — the standalone opt-in walk that asks, per pair the admin wants
150
- connected: parent object, child object, junction object, the junction's lookup field to the
151
- parent, the junction's lookup field to the child, and the junction's title/name field (the same
152
- six-question capture the bespoke sub-skill uses). Every pair captured here becomes a
153
- `relationshipList[]` entry, exactly as in a bespoke config. **This list is what gates which edge
154
- types the rule tree (step 3) can offer for a given node pair** — see "Child relationships" below.
155
- 3. **The rule tree** — new to this sub-skill. This is the `rules.graph.rootNode` object described
156
- below, which layers automatic-expansion rules (role labels, qualifying filters, and
157
- parent→child traversal) on top of the node list, reusing the relationships captured in step 2
158
- wherever a rule edge needs a junction.
159
-
160
- **Node-relationship capture now happens up front (step 2 above) — this reverses this skill's
161
- earlier documented behavior, which derived `relationshipList` from the `ManyToMany` edges captured
162
- mid-tree-walk.** The rule tree (step 3) now **reads** `relationshipList` rather than **writing** it:
163
- a parent→child pair can only offer **Many-to-many** in the rule tree if a `relationshipList` entry
164
- for that exact pair already exists from step 2; every other pair only offers **One-to-many**. See
165
- "Child relationships" below for exactly how that gate works.
166
-
167
- ## Gate — do not start the rule tree below until you have asked the relationship question
168
-
169
- **Before reading any further in this section, confirm you already asked the Path B layer-2
170
- question above: "Do you want to define node relationships? (Skip if not.)"** That question must be
171
- asked on its own, in its own message, and answered (yes with pairs captured, or no/skip) *before*
172
- you move on to the root node or any child relationship below. **Never jump straight from the node
173
- list (layer 1) to the rule tree (layer 3) without asking it — silence or an assumption is not an
174
- answer.** **Confirmed live: a run captured the node list (root + other objects, display fields),
175
- then went straight to "Now building the rule tree" and the root-role question — the relationship
176
- question was never asked at all.** If you notice you've reached this point without having asked it,
177
- stop and ask it now, before the root role or any other rule-tree question. And once you *are* in the tree walk: **never populate `relationshipList` by inferring a
178
- junction from a Many-to-many edge you're about to offer or that the admin just picked in the
179
- tree** — that direction (rule tree writes `relationshipList`) is the deprecated, reversed behavior
180
- called out above. The tree only ever *reads* `relationshipList`; if layer 2 was skipped or a pair
181
- wasn't captured there, that pair gets One-to-many only, full stop — do not backfill
182
- `relationshipList` from the tree to make Many-to-many available anyway.
183
-
184
- ## Building the rule tree (`rules.graph.rootNode`)
185
-
186
- **Checking configured roles (do this once, before Step 1).** Read the org's
187
- `FlexibleHierarchyNodeRole` `StandardValueSet` (same object Step 7 of the foundation skill populates)
188
- before asking about role anywhere in the tree, and cache the result for the rest of this walk:
189
-
190
- - **If it has no `<standardValue>` entries (confirmed the common case on an org where Step 7 was
191
- skipped or hasn't run yet)** — **skip asking for role entirely**, at the root and at every target
192
- node. There's nothing configured to choose from, and asking for a free-text label the admin might
193
- later expect to line up with Step 7's values would be misleading. Omit the `role` key from that
194
- node's JSON rather than emitting a blank/placeholder value.
195
- - **If it has one or more `<standardValue>` entries** — ask for role as a multiple-choice picker over
196
- those configured values (plus a free-text escape for a value not yet in the set, same
197
- shortlist+escape pattern used for filter fields), and validate whichever is chosen/typed against that
198
- same list before accepting it.
199
-
200
- The rule tree is **recursive**: the root node and every node it expands to have the same shape —
201
- `object` + `role` + (a `filter`, at the root only) + `childRelationships[]` — and each child
202
- relationship's target node can itself have further `childRelationships[]`, to whatever depth the
203
- admin needs (the grounding sample nests four levels: Account → Contact/Account → Contact → Case).
204
- Walk it top-down, one node at a time, exactly like the bespoke sub-skill walks node relationships one
205
- at a time — never ask the admin to describe the whole tree in one free-text blob.
206
-
207
- **Step 1 — the root node.**
208
- - **Root role** → `rules.graph.rootNode.role`. Follow "Checking configured roles" above: if the org
209
- has configured `FlexibleHierarchyNodeRole` values, offer them as a picker (+ free-text escape,
210
- validated) instead of the free-text prompt below; if the org has none configured, skip this question
211
- and omit `role` from the root node. Free-text wording, when it applies: *"What role does the root
212
- (`<root object>`) play in this hierarchy? (e.g. 'Manufacturer', 'Regional Distributor'.) This is a
213
- label shown in the UI, not a picklist value — type anything descriptive."*
214
- - **Root filter (optional)** → `rules.graph.rootNode.filter`. Ask directly: *"Do you want to add a
215
- filter for the root (`<root object>`)? This restricts which `<root object>` records qualify as
216
- roots — skip to include all of them."* If skipped, omit `filter` entirely (don't emit an empty
217
- object). If yes, capture the filter (see "Capturing a filter" below).
218
- - The root's `childRelationships` starts empty and is filled by Step 2.
219
-
220
- **Step 2 — child relationships, one at a time, then recurse.** For the current node (root, to
221
- start):
222
-
223
- 1. **Target object** → the child object for this relationship, multiple-choice over the objects
224
- already in `nodeList` (same choice-list discipline as the bespoke sub-skill's relationship
225
- capture — never a node outside the list), or **Done** if this node has no (more) children.
226
- Ask this every time, even when a self-referential junction (e.g. `AccountAccountRelation`)
227
- makes the target object look implied — a live run skipped the explicit confirmation on the
228
- assumption it was obvious and only got the right answer by coincidence.
229
- 2. **Check `relationshipList` (captured in Path B step 2, before this tree) for an entry matching
230
- this exact `(current node's object, target object)` pair.** This lookup decides which edge types
231
- you're even allowed to offer next:
232
- - **A matching entry exists** → offer both edge types:
233
- > Reach `<target object>` from `<current node's role/object>` how? A relationship for this pair
234
- > was already captured (junction `<junctionEntityApiName>`), so either works:
235
- > - **One-to-many** — through a direct lookup field on `<target object>`.
236
- > - **Many-to-many** — through the already-captured `<junctionEntityApiName>` junction.
237
- - **No matching entry** → **skip the edge-type question — go straight to One-to-many.** Don't
238
- offer Many-to-many for a pair with no captured relationship; this sub-skill no longer captures a
239
- junction mid-tree-walk (see the flow-order note above the tree section), so there's nothing to
240
- reuse. If the admin specifically wants a Many-to-many edge for this pair, tell them to add the
241
- relationship in Path B step 2 first (name the parent/child pair so they know what to add), then
242
- resume the tree walk from here — don't invent a junction question in the middle of the walk.
243
-
244
- - **One-to-many (default, or the admin's choice when both are offered):**
245
- - **Target role** → `childRelationships[].OneToMany.targetObjectNode.role`. Same conditional
246
- behavior as the root role question above (picker+escape if the org has configured values, skip
247
- and omit `role` entirely if not); when free-text applies, use the same wording pattern naming the
248
- target object.
249
- - **Filter (optional)** → `childRelationships[].OneToMany.filter`. Ask: *"Restrict which
250
- `<target object>` records qualify? (Skip to include all children reached this way.)"* Same
251
- capture mechanics as the root filter; omit `filter` entirely if skipped.
252
- - **Relationship field** → `childRelationships[].OneToMany.relationshipField.field`. **Query the
253
- target/child object's describe for every lookup/master-detail field whose reference is the
254
- current/parent object — not just the first or most obviously-named one — and present the full
255
- set as a multiple-choice picker** (same lookup-field discovery as the bespoke sub-skill's
256
- junction-field questions, just direct rather than through a junction). Objects frequently expose
257
- more than one lookup to the same parent (e.g. `Opportunity` has both `AccountId` and
258
- `PrimaryPartnerAccountId` referencing `Account`) — **never default to the "standard-sounding"
259
- field (like `AccountId`) without asking, even when there's only one candidate; always confirm
260
- with the admin.** State the direction plainly: this is the field on the child that points *up* at
261
- the parent; picking a field that points elsewhere breaks expansion silently.
262
- - `relationshipUiConfig` is always emitted as `{}` — never ask about it.
263
- - **Many-to-many (only offered when step 2 above found a matching `relationshipList` entry):**
264
- - **Target role** → `childRelationships[].ManyToMany.targetObjectNode.role`. Same conditional
265
- behavior as the root role question above.
266
- - **Filter (optional)** → `childRelationships[].ManyToMany.filter`, same capture mechanics as
267
- above.
268
- - **Junction object, source field, target field — reuse from the matching `relationshipList`
269
- entry, don't re-ask.** `childRelationships[].ManyToMany.junctionObject.entity` =
270
- `junctionEntityApiName`, `.sourceField.field` = `parentFieldApiName`, `.targetField.field` =
271
- `childFieldApiName` from that entry. Echo the reused values back to the admin (*"Using the
272
- `<junctionEntityApiName>` junction already captured for `<parent>`→`<child>` (`<parentField>` /
273
- `<childField>`)."*) so they can catch a mismatch, but don't ask them to re-pick the junction or its
274
- fields — that was already decided in Path B step 2.
275
- - `relationshipUiConfig` is always emitted as `{}` — never ask about it.
276
- - **No new `relationshipList` entry needed.** Because Many-to-many is only offered for a pair with
277
- an existing entry, this edge reuses that entry as-is — there's nothing to mirror or dedup here
278
- (that used to be necessary when the rule tree was the thing writing `relationshipList`; now it's
279
- only ever reading it). If the same `relationshipList` entry backs multiple rule edges (e.g. two
280
- different roles both reachable through the same junction), that's fine — every such edge points
281
- at the same one entry.
282
- - **After capturing one child relationship, ask if there's another sibling under the *same* current
283
- node** ("Add another child relationship under `<current node>`? Or say done."), looping until the
284
- admin says done, **then recurse into any children just added** — ask the Step 2 question again,
285
- now with that new target node as the "current node," before moving on to its siblings' own
286
- children. Walk depth-first: finish one branch's full depth before starting the next sibling branch,
287
- so you never lose track of which node you're currently adding children under. Echo back what you
288
- just captured before asking the next question, the same way the bespoke sub-skill echoes each
289
- relationship before offering another.
290
-
291
- ## Capturing a filter (`filter.filterCriteria[]` + `filter.booleanFilter`)
292
-
293
- A filter is optional at the root and at every `OneToMany`/`ManyToMany` edge (see above). When the
294
- admin opts in, capture **one criterion at a time**, looping:
295
-
296
- - **Field** → `filterCriteria[].field.field`. **Present as a real single-select picker over 3
297
- describe-derived shortlisted fields on the filtered object — the same shortlist mechanism used for
298
- `graphViewFields`/`gridViewFields` in the bespoke node-list flow** — followed by a separate genuine
299
- free-text follow-up ("Any other field? Enter its API name, or say none") for anything not
300
- shortlisted. Never fold the "type your own" escape into the picker itself (same dead-option rule as
301
- everywhere else in this skill family). Whichever way the field is named, **validate it against the
302
- filtered object's live schema** (the root object for a root filter; the target/child object for an
303
- edge filter) before accepting it — direct standard, custom `__c`, or dotted relationship path, same
304
- discipline as every other field input in this skill family. **Fetch that field's describe metadata
305
- now** (type, and `picklistValues` if it's a picklist) — the Operator and Value steps below both
306
- depend on it.
307
- - **`whichEntity`** → `filterCriteria[].field.whichEntity`. **Only `TARGET` is grounded** (every
308
- criterion in the sample uses it, meaning "the object being filtered," i.e. the root object for a
309
- root filter or the target/child object for an edge filter). Default to `TARGET` and don't ask this
310
- as a separate question unless the admin's own Path-A config uses something else — this isn't a
311
- confirmed enum with other legal values.
312
- - **Operator** → `filterCriteria[].operator`, multiple-choice, **filtered by the field's type from the
313
- describe fetched above — don't offer an operator that can't make sense for that type.** **Always
314
- present each choice as the wire token followed by its plain-English meaning in brackets** — e.g.
315
- *"eq (equals)"*, *"ne (not equal to)"*, *"gt (greater than)"*, *"lt (less than)"* — never show the
316
- bare wire token alone; the admin picks by meaning, not by memorizing the enum:
317
- - **`picklist`/`multipicklist`/`string`/`textarea` fields** — offer **`eq` (equals) and `ne` (not
318
- equal to)**. The Setup UI's own filter builder offers "Equals" and "Not Equal to" for these types
319
- (confirmed by direct observation on a live org) — equality-only was an earlier, now-corrected
320
- assumption. Flag to the admin that `ne`'s exact wire token is inferred (SOQL convention), not yet
321
- exercised in a live deploy payload — every grounded sample so far still used `eq` on
322
- string/picklist fields.
323
- - **`boolean`/`id`/`reference` fields** — no ordering or not-equal semantics are confirmed for these,
324
- so offer **only `eq` (equals)**.
325
- - **`int`/`double`/`currency`/`percent`/`date`/`datetime` fields** — ordering is meaningful, so offer
326
- **`eq` (equals), `gt` (greater than), and `lt` (less than)** — all three confirmed live (root and
327
- edge filters on this skill's own build-from-scratch rule tree and the admin's own UI-built rule
328
- tree both used `gt` and `lt` on numeric fields).
329
- - If the admin needs something beyond this set (e.g. `gte`/`lte`/`contains`) for any field type, tell
330
- them it's unconfirmed for this metadata type and offer to include it as typed free-text with an
331
- explicit heads-up that it hasn't been validated against a live deploy — don't silently invent an
332
- operator enum. If offered, still show its plain-English meaning in brackets the same way (e.g.
333
- *"gte (greater than or equal to)"*).
334
- - **Value** → `filterCriteria[].value`, free-text, typed to match the field (numbers unquoted, strings
335
- quoted in the JSON — e.g. `3000` for `NumberOfEmployees`, `"Electronics"` for `Industry`).
336
- **Validate the typed value against the field's actual constraints before accepting it — this is
337
- mandatory, not optional, for the same reason field/object validation is mandatory elsewhere in this
338
- skill family: a value that looks plausible but doesn't match reality produces a filter that silently
339
- never matches any record.**
340
- - **`picklist`/`multipicklist`** — check the typed value against that field's live `picklistValues`
341
- (exact match). If it doesn't match, **don't silently accept it** — tell the admin the value isn't
342
- one of the field's configured picklist values, show a few real values as examples, and ask them to
343
- re-enter (a close-looking value that isn't an exact match — e.g. typing `Manufacturer` when the
344
- org's actual value is `Manufacturing` — is a real, confirmed-live failure mode, not a hypothetical
345
- one: it deploys successfully but the filter never matches any account).
346
- - **`int`/`double`/`currency`/`percent`** — check it parses as a number; reject and re-ask if not.
347
- - **`date`/`datetime`** — check it parses as a valid date/datetime; reject and re-ask if not.
348
- - **`boolean`** — check it's `true`/`false`; reject and re-ask if not.
349
- - **`string`/`textarea`/other free-text types** — no fixed value set to check against; accept as
350
- typed (there's nothing further to validate).
351
- - **After each criterion, ask if there's another** ("Add another filter criterion? Or say done.").
352
- Stop when the admin says done; a single-criterion filter is valid (skip `booleanFilter` questions
353
- entirely — see below).
354
- - **`booleanFilter`** — only needed when there are **2 or more** criteria. Once the admin is done
355
- adding criteria, if there are 2+, ask how they combine: *"You added `<N>` criteria. How should they
356
- combine? Enter a boolean expression using the criterion numbers, e.g. `1 AND 2 AND 3` or
357
- `(1 AND 2) OR 3`."* Default suggestion is every criterion `AND`-ed together (matches every criterion
358
- in the sample), but let the admin override with their own numbered expression, including nested
359
- parentheses — confirmed live on an admin's own independently UI-built rule tree, e.g.
360
- `"(1 AND 2) AND (3 AND 4) AND (5 OR 6)"`. Emit it as the literal string typed.
361
-
362
- ## ⚠️ Pitfall: the duplicate `flexibleHierarchy` block
363
-
364
- Beyond the bespoke sub-skill's existing pitfall (never place `flexibleHierarchy` as a sibling of
365
- `rootNode` at the `graph` root), a rule-based config has a **second** duplication trap: an
366
- admin-provided sample carried the entire `flexibleHierarchy` object — `nodeList`, `rules`,
367
- `relationshipList`, and `summaryRollupList` together — **twice**, as two literal sibling
368
- `"flexibleHierarchy"` keys inside `graph.globalUiConfig` with identical content. This was initially
369
- assumed to be a paste artifact in that sample — **that assumption was wrong.** A live build-from-scratch
370
- create against a live org sent a payload with exactly **one** `flexibleHierarchy` key, and the
371
- immediate MDAPI re-retrieve of the created component came back with **two**, byte-for-byte identical.
372
- **The org itself duplicates `flexibleHierarchy` on create/retrieve for a Rule-Based
373
- `RelationshipGraphDefinition`** — this is server-side round-trip behavior, not something the admin or
374
- this skill introduced by pasting. **Still send only one `flexibleHierarchy` key when building/deploying
375
- a payload** (the create call only needs — and only accepts cleanly — the single copy); the duplication
376
- happens on the org's side afterward and is cosmetic on read-back, not something to replicate when
377
- authoring. When reconciling an admin-supplied Path A config that already carries two identical copies
378
- (whether from an export of this same round-trip behavior or an actual paste), strip down to one before
379
- re-deploying.
380
-
381
- ## Deploy + verify
382
-
383
- Identical confirm-then-deploy-then-read-back flow as the bespoke sub-skill: show the admin the
384
- hierarchy-type name (`masterLabel`) and root object (name + root object only — never the internal
385
- `relationshipList`/`summaryRollupList`/rule-tree wire plumbing) and ask for a go-ahead immediately
386
- before the write:
387
-
388
- > Ready to deploy the `<name>` hierarchy type (root object `<object>`, Rule-Based). Deploy it now?
389
- > (yes / no)
390
-
391
- On *yes*, create via **the raw Metadata API (mdapi package + SOAP deploy)**, wrapped by
392
- `/headless/metadata`, against a
393
- `relationshipGraphDefinitions/<DeveloperName>.relationshipGraphDefinition-meta.xml` component — **not**
394
- the Tooling API POST, which fails unreliably for `GraphType: "FlexibleHierarchy"` (see the intro
395
- above). Same `relationshipGraphDefVersions` field shape as the bespoke sub-skill, just with the
396
- `rules` key present inside `globalUiConfig.flexibleHierarchy`. Then read back with the **same
397
- queryable-columns limitation** as the bespoke sub-skill: `SELECT Id, DeveloperName, MasterLabel FROM
398
- RelationshipGraphDefinition WHERE DeveloperName='<Name>'` — `GraphType`/`RootObject`/`IsActive` (and
399
- the entire `rules` tree) are not queryable columns; they live inside
400
- `relationshipGraphDefVersions`/`graphDefinition` and can't be verified by SOQL. If you need to verify
401
- the rule tree itself took effect as authored, that requires re-retrieving the metadata component (not
402
- a SOQL query) — note this limitation to the admin rather than implying the SOQL read-back proves the
403
- rule tree deployed correctly.
404
-
405
- ## End state
406
-
407
- A `RelationshipGraphDefinition` component carrying both the flat `nodeList`/`relationshipList` and
408
- the `rules.graph.rootNode` rule tree — from the admin's own config (Path A) or one built with them
409
- node-by-node and rule-by-rule (Path B) — created via MDAPI deploy and confirmed present by
410
- read-back (existence only; the rule tree's correctness is confirmed by re-retrieve, not SOQL — see
411
- above).
412
-
413
- <!-- skill-validate: ignore-start -->
414
- <!-- codey:operations start -->
415
- ## Operations Reference
416
-
417
- Operations this skill uses — routing and dependency reference.
418
-
419
- | Operation | Purpose | Status | Call | Depends on |
420
- |-----------|---------|--------|------|------------|
421
- | `step-1-delegate-node-list-and-relationships` | delegate | — | → `fsc-darksaber/fsc-flexible-hierarchy-configure-graph-config-create` | — |
422
- | `step-2-check-configured-node-roles` | discovery | — | `GET /sobjects/FlexibleHierarchyNode/describe` | `step-1-delegate-node-list-and-relationships` |
423
- | `step-3-validate-rule-tree-referenced-objects` | discovery | — | `GET /services/data/v66.0/sobjects/EntityDefinition/describe` | `step-1-delegate-node-list-and-relationships` |
424
- | `step-3b-discover-onetomany-relationship-field` | discovery | — | `GET /services/data/v66.0/sobjects/{object}/describe` | `step-3-validate-rule-tree-referenced-objects` |
425
- | `step-3c-discover-and-validate-filter-fields` | discovery | — | `GET /services/data/v66.0/sobjects/{object}/describe` | `step-3-validate-rule-tree-referenced-objects` |
426
- | `step-4-deploy-relationship-graph-definition` | write | — | `/headless/metadata` | `step-2-check-configured-node-roles`, `step-3-validate-rule-tree-referenced-objects`, `step-3b-discover-onetomany-relationship-field`, `step-3c-discover-and-validate-filter-fields` |
427
- | `step-5-verify-relationship-graph-definition` | verify | — | `GET /services/data/v66.0/query` | `step-4-deploy-relationship-graph-definition` |
428
- <!-- codey:operations end -->
429
- <!-- skill-validate: ignore-end -->
@@ -1,150 +0,0 @@
1
- ---
2
- name: fsc-pricing-product-configurator-configure
3
- parent: "digital-origination-pricing-setup"
4
- purpose: "Configure Product Configurator attributes for the default lending pricing engine."
5
- description: "Configure the Product Configurator prerequisites for Digital Lending pricing by resolving Loan Term, Credit Score, and Loan Amount attributes on the target lending product classification, creating the Credit Score and Loan Amount base attribute definitions headlessly when they are missing (they are net-new to this sibling — the product-setup sibling creates the other five), assigning them to the classification, setting the required Is Price Impacting and Is Hidden flags, and verifying the resulting product-attribute state. Uses Enterprise Product Catalog reads and verified sObject writes (AttributeDefinition + ProductClassificationAttr); the Connect API exposes isPriceImpacting/isHidden as read-only outputs, so the flags are written by sObject PATCH after a describe-verify, with a Product Catalog Management UI checkpoint only as a last resort."
6
- metadata:
7
- version: "1.0"
8
- ---
9
-
10
- # Digital Origination Product Configurator pricing prerequisites
11
-
12
- Configure the three price-driving attributes required by the default Digital Lending Product
13
- Configurator path. This sibling does not create decision tables or pricing procedures.
14
-
15
- ## Inputs and prerequisites
16
-
17
- - Target-org alias
18
- - Exact product-classification ID and lending product IDs
19
- - Product Catalog Management already complete
20
- - Product Catalog Management Designer access verified
21
-
22
- Resolve attributes by record ID and API name. Do not change a similarly labeled attribute on another
23
- classification.
24
-
25
- ## Required final state
26
-
27
- | Attribute | Data type | Is Price Impacting | Is Hidden |
28
- |---|---|---|---|
29
- | Loan Term | Existing supported type, normally picklist/text-backed | true | preserve current value |
30
- | Credit Score | Number | true | true |
31
- | Loan Amount | Currency | true | preserve current value |
32
-
33
- Supported documentation examples include Number for Credit Score, text-backed Picklist for Loan Term,
34
- and Currency for loan/down-payment values. Validate the actual procedure and target release.
35
-
36
- ## Reusable EPC reads
37
-
38
- Use approved SOR
39
- `connect-api/cme-core-shasta/industries-epc-connect-api__sfdc.industries.epc.connect.api_oas_67.0`:
40
-
41
- - `get-product-attributes` (`getProductAttributes`) - `GET /connect/pcm/product/{productId}/attributes`
42
- - `post-product-classification-list` - resolve classifications
43
- - `post-product-classification-details` - read classification details
44
- - `get-categories` / `get-category-details` - verify catalog/category relationships
45
- - `post-product-attribute-definition` (`postProductAttributeDefinition`) - creates a
46
- product-attribute-definition assignment from an
47
- existing `attributeDefinitionId`; it does not create the base Attribute Definition.
48
-
49
- The Connect input representation for `postProductAttributeDefinition` does not contain
50
- `isPriceImpacting` or `isHidden`. Across the current corpus those fields are outputs/read filters, not
51
- typed writes.
52
-
53
- ## Step 1 - Resolve existing definitions and assignments
54
-
55
- 1. Read the target classification and products.
56
- 2. Read product attributes; capture AttributeDefinition, ProductClassificationAttribute, and
57
- ProductAttributeDefinition IDs/API names plus data type and current flags.
58
- 3. Reuse exact Loan Term, Credit Score, and Loan Amount attributes.
59
- 4. If **Loan Term** is missing, it belongs to the product-setup sibling (Act 3) — report it as an
60
- upstream gap and continue. If **Credit Score** or **Loan Amount** is missing, this sibling OWNS
61
- creating them (they are net-new here, NOT part of Act 3's five) — go straight to Step 2 and create
62
- them headlessly. **Do NOT stop to ask** — creation is the expected path on a fresh org, and a run
63
- that leaves them uncreated is incomplete, not "done pending approval."
64
-
65
- ## Step 2 - Create the missing base attribute (headless, deterministic)
66
-
67
- Base definitions this sibling creates when absent (net-new to this sibling — the product-setup Act 3
68
- sibling creates the other five with the identical contract):
69
-
70
- | Attribute | Label | API name (`Code`) | `DataType` |
71
- |---|---|---|---|
72
- | Credit Score | Credit Score | `CreditScore` | Number |
73
- | Loan Amount | Loan Amount | `LoanAmount` | Currency |
74
-
75
- The help article contains a typo `CreaditScore` in one Name field; do not reproduce it — the API name is
76
- `CreditScore`.
77
-
78
- There is no typed Connect operation to create the base AttributeDefinition, but the **direct sObject REST
79
- path is proven** (identical to the product-setup Act 3 contract). Create each missing attribute, then
80
- activate and assign it:
81
-
82
- 1. **Create the base `AttributeDefinition`** — `POST /services/data/vXX.0/sobjects/AttributeDefinition`
83
- with the four required fields **`Name`, `Code`, `DataType`, `Label`** (org-verified): Credit Score →
84
- `{Name:"CreditScore", Code:"CreditScore", Label:"Credit Score", DataType:"Number"}`; Loan Amount →
85
- `{Name:"LoanAmount", Code:"LoanAmount", Label:"Loan Amount", DataType:"Currency"}`. **Do NOT send a
86
- `Status` field** — `AttributeDefinition` has no `Status` column (`400 INVALID_FIELD`). It is created
87
- `IsActive=false`.
88
- 2. **Activate it** — `PATCH /sobjects/AttributeDefinition/<id> {"IsActive": true}` (the activation field
89
- is `IsActive`, NOT `Status`). This MUST precede the classification assignment: `ProductClassificationAttr`
90
- rejects an inactive attribute with `INVALID_INPUT: You can associate only active attributes with a
91
- product classification.`
92
- 3. **Assign it to the target classification** — POST a **`ProductClassificationAttr`** junction with the
93
- required `Name`, `ProductClassificationId` (the lending classification), and `AttributeDefinitionId`
94
- (the active attribute). This is the same junction the product-setup Act 4 `assign-attr-to-classification`
95
- step writes, and it is the record that carries the Step 3 pricing flags (`IsPriceImpacting` /
96
- `IsHidden`).
97
- 4. When the per-product assignment input IDs are known, `postProductAttributeDefinition`
98
- (`POST /connect/pcm/product-attribute-definitions`) records the product-level assignment.
99
-
100
- Verify each create/activate/assign with a fresh read before moving on. Fall back to a guided PCM
101
- checkpoint only if the target org actually rejects these sObject writes.
102
-
103
- ## Step 3 - Set pricing flags
104
-
105
- The `isPriceImpacting` / `isHidden` flags surface on the **`ProductClassificationAttr`** junction
106
- (fields `IsPriceImpacting` / `IsHidden`). The Connect API exposes them as READ-ONLY outputs
107
- (`getProductAttributes`; the `postProductAttributeDefinition` input carries no such fields), so the write
108
- is a **standard sObject PATCH on `ProductClassificationAttr`** — attempt this headless path FIRST, with
109
- the PCM UI only as a last-resort fallback.
110
-
111
- Write order:
112
-
113
- 1. Resolve the exact `ProductClassificationAttr` record for each attribute on the target classification,
114
- and **describe it to confirm `IsPriceImpacting` / `IsHidden` are `updateable`** (guards against a
115
- release where they are calculated/read-only).
116
- 2. If updateable, PATCH each junction record, preserving unrelated fields:
117
- - Loan Term: `IsPriceImpacting = true`.
118
- - Credit Score: `IsPriceImpacting = true`, `IsHidden = true`.
119
- - Loan Amount: `IsPriceImpacting = true`.
120
- 3. Only if the describe shows the fields are NOT updateable on this org/release, use the PCM UI
121
- checkpoint as a fallback: Product Catalog Management -> Product Classification -> target classification
122
- -> Attributes -> edit attribute -> set the same flags -> Save.
123
- 4. Re-read all three with `get-product-attributes` and confirm the flags match the required final state.
124
-
125
- Credit Score is hidden because the applicant must not enter it; the Digital Lending configurator
126
- retrieves it from the party credit profile.
127
-
128
- ## Idempotency and safety
129
-
130
- - Skip writes when the flags already match.
131
- - Never clear an existing Hidden flag on Loan Term or Loan Amount without an explicit request.
132
- - Do not create duplicate attribute definitions or suffixed API names automatically.
133
- - Do not assign the attribute to unrelated products or classifications.
134
- - If record-level writes are not in an approved SOR, label them as standard sObject fallback and
135
- verify updateability before execution.
136
-
137
- ## Output contract
138
-
139
- Return classification ID, product IDs, attribute-definition and assignment IDs, actual API names,
140
- data types, previous flags, action path (API or UI), and verified final flags. Pass this result to
141
- nested `pricing-procedure` for the Product Configurator branch.
142
-
143
- ## Definition of done
144
-
145
- The target classification exposes Loan Term, Credit Score, and Loan Amount as **active** attributes with
146
- the required Is Price Impacting / Is Hidden flags, all confirmed through fresh reads. On a fresh org that
147
- means Credit Score and Loan Amount were CREATED (base `AttributeDefinition` + activation + classification
148
- assignment) and every flag was set — a run that stops without creating a missing Credit Score / Loan
149
- Amount attribute is INCOMPLETE, not "partial by design." A UI fallback is acceptable only if the target
150
- org's describe proved the flag fields non-updateable.