@salesforce/afv-skills 1.63.0 → 1.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-gpt-email-generation-configure/SKILL.md +312 -0
  3. package/skills/agentforce-offline-experimentation-run/SKILL.md +253 -0
  4. package/skills/agentforce-offline-experimentation-run/scripts/build_report.py +796 -0
  5. package/skills/agentforce-offline-experimentation-run/scripts/resolve-token.sh +111 -0
  6. package/skills/agentforce-offline-experimentation-run/scripts/sfap_replay.py +1053 -0
  7. package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +64 -0
  8. package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +46 -0
  9. package/skills/automation-company-profile-info-query/SKILL.md +51 -0
  10. package/skills/automation-digital-wallet-configure/SKILL.md +689 -0
  11. package/skills/automation-flow-coordinate/SKILL.md +95 -0
  12. package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +1569 -0
  13. package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +96 -0
  14. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +23 -0
  15. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +31 -0
  16. package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +179 -0
  17. package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +13 -0
  18. package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +83 -0
  19. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +69 -0
  20. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +274 -0
  21. package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +192 -0
  22. package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +130 -0
  23. package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +92 -0
  24. package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +88 -0
  25. package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +152 -0
  26. package/skills/automation-flow-coordinate/references/elements/start/start.md +539 -0
  27. package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +152 -0
  28. package/skills/automation-flow-coordinate/references/elements/wait/wait.md +497 -0
  29. package/skills/automation-flow-coordinate/references/recipes/author/author.md +868 -0
  30. package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +300 -0
  31. package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +292 -0
  32. package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +323 -0
  33. package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +109 -0
  34. package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +219 -0
  35. package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +180 -0
  36. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +175 -0
  37. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +255 -0
  38. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +212 -0
  39. package/skills/automation-flow-coordinate/references/resources/variable/variable.md +171 -0
  40. package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +786 -0
  41. package/skills/automation-flow-coordinate/references/shared/end/end.md +267 -0
  42. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +69 -0
  43. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +80 -0
  44. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +116 -0
  45. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +321 -0
  46. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +320 -0
  47. package/skills/automation-flow-coordinate/references/shared/server-functions.md +597 -0
  48. package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +21 -11
  49. package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +10 -0
  50. package/skills/automation-sandbox-post-copy-config-generate/assets/json_schema.json +33 -1
  51. package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md +44 -1
  52. package/skills/automation-sandbox-post-copy-configure/SKILL.md +132 -124
  53. package/skills/automation-sandbox-post-copy-configure/references/flow_activation_path.md +151 -0
  54. package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +55 -9
  55. package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +69 -0
  56. package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +78 -0
  57. package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +373 -0
  58. package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +273 -0
  59. package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +259 -0
  60. package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +369 -0
  61. package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +542 -0
  62. package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +159 -0
  63. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +349 -0
  64. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +505 -0
  65. package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +380 -0
  66. package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +567 -0
  67. package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +159 -0
  68. package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +360 -0
  69. package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +539 -0
  70. package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +358 -0
  71. package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +602 -0
  72. package/skills/commerce-b2b-store-configure/SKILL.md +251 -0
  73. package/skills/commerce-credit-memo-create/SKILL.md +139 -0
  74. package/skills/commerce-delivery-business-hours-configure/SKILL.md +277 -0
  75. package/skills/commerce-delivery-estimation-apply/SKILL.md +155 -0
  76. package/skills/commerce-delivery-estimation-configure/SKILL.md +377 -0
  77. package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +174 -0
  78. package/skills/commerce-estimate-bopis-query/SKILL.md +279 -0
  79. package/skills/commerce-estimate-delivery-date-query/SKILL.md +349 -0
  80. package/skills/commerce-fees-apply/SKILL.md +227 -0
  81. package/skills/commerce-fulfillment-routing-analyze/SKILL.md +200 -0
  82. package/skills/commerce-guest-buyer-create/SKILL.md +173 -0
  83. package/skills/commerce-location-bopis-configure/SKILL.md +378 -0
  84. package/skills/commerce-location-business-hours-configure/SKILL.md +235 -0
  85. package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +309 -0
  86. package/skills/commerce-location-graph-integrate/SKILL.md +131 -0
  87. package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +755 -0
  88. package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +331 -0
  89. package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +579 -0
  90. package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +626 -0
  91. package/skills/commerce-merchant-catalog-configure/SKILL.md +614 -0
  92. package/skills/commerce-merchant-extension-provider-configure/SKILL.md +368 -0
  93. package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +118 -0
  94. package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +65 -0
  95. package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +90 -0
  96. package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +72 -0
  97. package/skills/commerce-merchant-insights-query/SKILL.md +279 -0
  98. package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +656 -0
  99. package/skills/commerce-order-summary-change-apply/SKILL.md +375 -0
  100. package/skills/commerce-product-details-get/SKILL.md +363 -0
  101. package/skills/commerce-product-search/SKILL.md +563 -0
  102. package/skills/commerce-react-storefront-create/SKILL.md +350 -0
  103. package/skills/commerce-return-order-summary-create/SKILL.md +513 -0
  104. package/skills/commerce-search-relevance-analyze/SKILL.md +757 -0
  105. package/skills/commerce-temporary-processing-time-override-create/SKILL.md +274 -0
  106. package/skills/communications-initial-setup-configure/SKILL.md +630 -0
  107. package/skills/communications-multisite-configure/SKILL.md +571 -0
  108. package/skills/communications-revenue-cloud-settings-configure/SKILL.md +74 -0
  109. package/skills/communications-smb-fiber-catalog-create/SKILL.md +413 -0
  110. package/skills/communications-tmf-integrate/SKILL.md +1368 -0
  111. package/skills/consumer-goods-promotion-bo-api-deploy/SKILL.md +54 -107
  112. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/payloads/copy.json +1 -1
  113. package/skills/consumer-goods-promotion-bo-api-deploy/references/conventions-and-payload-rules.md +82 -5
  114. package/skills/consumer-goods-promotion-bo-api-deploy/references/generate-and-wire.md +35 -2
  115. package/skills/consumer-goods-promotion-bo-api-deploy/references/preflight-and-seed-queries.md +149 -0
  116. package/skills/consumer-goods-promotion-bo-api-deploy/references/smoke-and-verify.md +17 -1
  117. package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +448 -0
  118. package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +269 -0
  119. package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +271 -0
  120. package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +382 -0
  121. package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +373 -0
  122. package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +389 -0
  123. package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +338 -0
  124. package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +547 -0
  125. package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +346 -0
  126. package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +1110 -0
  127. package/skills/crm-analytics-adoption-insights-configure/SKILL.md +224 -0
  128. package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +418 -0
  129. package/skills/crm-analytics-dashboards-configure/SKILL.md +731 -0
  130. package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +233 -0
  131. package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +184 -0
  132. package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +167 -0
  133. package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +55 -0
  134. package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +1350 -0
  135. package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +1862 -0
  136. package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +83 -0
  137. package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +81 -0
  138. package/skills/data360-activation-create/SKILL.md +104 -0
  139. package/skills/data360-activation-external-platform-get/SKILL.md +49 -0
  140. package/skills/data360-activation-target-create/SKILL.md +93 -0
  141. package/skills/data360-activation-v2-create/SKILL.md +456 -0
  142. package/skills/data360-audience-dmo-get/SKILL.md +38 -0
  143. package/skills/data360-calculated-affinity-create/SKILL.md +82 -0
  144. package/skills/data360-calculated-insight-create/SKILL.md +148 -0
  145. package/skills/data360-catalog-metadata-create/SKILL.md +183 -0
  146. package/skills/data360-code-extension-create/SKILL.md +115 -0
  147. package/skills/data360-communication-capping-create/SKILL.md +227 -0
  148. package/skills/data360-connection-create/SKILL.md +491 -0
  149. package/skills/data360-content-lens-create/SKILL.md +181 -0
  150. package/skills/data360-data-action-create/SKILL.md +126 -0
  151. package/skills/data360-data-action-target-create/SKILL.md +181 -0
  152. package/skills/data360-data-clean-room-create/SKILL.md +238 -0
  153. package/skills/data360-data-governance-create/SKILL.md +746 -0
  154. package/skills/data360-data-graph-create/SKILL.md +82 -0
  155. package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +38 -0
  156. package/skills/data360-data-lake-object-create/SKILL.md +207 -0
  157. package/skills/data360-data-model-object-catalog-get/SKILL.md +49 -0
  158. package/skills/data360-data-model-object-create/SKILL.md +128 -0
  159. package/skills/data360-data-model-object-mapping-create/SKILL.md +106 -0
  160. package/skills/data360-data-space-create/SKILL.md +161 -0
  161. package/skills/data360-data-streams-create/SKILL.md +324 -0
  162. package/skills/data360-engagement-signal-get/SKILL.md +38 -0
  163. package/skills/data360-experiment-create/SKILL.md +82 -0
  164. package/skills/data360-goal-based-campaign-create/SKILL.md +192 -0
  165. package/skills/data360-harmonization-process-history-get/SKILL.md +38 -0
  166. package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +84 -0
  167. package/skills/data360-identity-resolution-create/SKILL.md +115 -0
  168. package/skills/data360-intelligent-document-processing-create/SKILL.md +148 -0
  169. package/skills/data360-knowledge-graph-construction-create/SKILL.md +93 -0
  170. package/skills/data360-knowledge-graph-create/SKILL.md +216 -0
  171. package/skills/data360-knowledge-space-mcp-configure/SKILL.md +475 -0
  172. package/skills/data360-machine-learning-mcp-configure/SKILL.md +697 -0
  173. package/skills/data360-multi-org-mcp-configure/SKILL.md +117 -0
  174. package/skills/data360-secondary-index-mcp-configure/SKILL.md +126 -0
  175. package/skills/data360-segment-mcp-configure/SKILL.md +159 -0
  176. package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +93 -0
  177. package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +93 -0
  178. package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +93 -0
  179. package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +38 -0
  180. package/skills/data360-semantic-engine-mcp-configure/SKILL.md +62 -0
  181. package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +38 -0
  182. package/skills/data360-semantic-metric-mcp-configure/SKILL.md +93 -0
  183. package/skills/data360-semantic-model-mcp-configure/SKILL.md +115 -0
  184. package/skills/data360-standard-mapping-mcp-configure/SKILL.md +38 -0
  185. package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +73 -0
  186. package/skills/dx-devops-conflict-resolve/SKILL.md +1 -5
  187. package/skills/dx-devops-pipeline-manage/SKILL.md +1 -5
  188. package/skills/dx-devops-project-manage/SKILL.md +1 -5
  189. package/skills/dx-devops-promote/SKILL.md +1 -5
  190. package/skills/dx-devops-request-status/SKILL.md +1 -5
  191. package/skills/dx-lifecycle-center/SKILL.md +120 -0
  192. package/skills/dx-lifecycle-center/examples/workflows.md +175 -0
  193. package/skills/dx-lifecycle-center/references/connect-api.md +123 -0
  194. package/skills/dx-lifecycle-center/references/connect-org.md +184 -0
  195. package/skills/dx-lifecycle-center/references/deploy.md +153 -0
  196. package/skills/dx-lifecycle-center/references/error-handling.md +21 -0
  197. package/skills/dx-lifecycle-center/references/hub-org.md +37 -0
  198. package/skills/dx-lifecycle-center/references/list-orgs.md +99 -0
  199. package/skills/dx-lifecycle-center/references/request-body.md +75 -0
  200. package/skills/dx-lifecycle-center/references/troubleshooting.md +31 -0
  201. package/skills/dx-lifecycle-center/scripts/poll-deploy-status.sh +200 -0
  202. package/skills/dx-lifecycle-center/scripts/resolve-environment.sh +120 -0
  203. package/skills/dx-org-devhub-configure/SKILL.md +1 -3
  204. package/skills/dx-org-shape-manage/SKILL.md +1 -5
  205. package/skills/dx-org-snapshot-manage/SKILL.md +1 -3
  206. package/skills/education-cloud-academic-calendar-generate/SKILL.md +1 -3
  207. package/skills/education-cloud-course-catalog-migrate/SKILL.md +1 -3
  208. package/skills/education-cloud-domain-configure/SKILL.md +1 -3
  209. package/skills/education-cloud-multi-campus-configure/SKILL.md +1 -3
  210. package/skills/education-cloud-student-recruitment-agent-configure/SKILL.md +1 -5
  211. package/skills/experience-afv-query/SKILL.md +234 -0
  212. package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +63 -0
  213. package/skills/experience-apex-components-configure/SKILL.md +69 -0
  214. package/skills/experience-apex-pages-configure/SKILL.md +107 -0
  215. package/skills/experience-app-home-configure/SKILL.md +76 -0
  216. package/skills/experience-aura-lightning-out-access-configure/SKILL.md +58 -0
  217. package/skills/experience-briefcase-configure/SKILL.md +287 -0
  218. package/skills/experience-community-flexi-page-list-create/SKILL.md +74 -0
  219. package/skills/experience-community-template-definition-list-query/SKILL.md +48 -0
  220. package/skills/experience-community-theme-definition-list-query/SKILL.md +38 -0
  221. package/skills/experience-content-assets-configure/SKILL.md +86 -0
  222. package/skills/experience-custom-domain-create/SKILL.md +727 -0
  223. package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +41 -0
  224. package/skills/experience-field-service-app-builder-configure/SKILL.md +187 -0
  225. package/skills/experience-flow-category-configure/SKILL.md +117 -0
  226. package/skills/experience-formula-configure/SKILL.md +358 -0
  227. package/skills/experience-global-actions-configure/SKILL.md +69 -0
  228. package/skills/experience-global-publisher-layouts-configure/SKILL.md +79 -0
  229. package/skills/experience-instrumentation-configure/SKILL.md +64 -0
  230. package/skills/experience-lex-engagement-configure/SKILL.md +50 -0
  231. package/skills/experience-lightning-bolt-open/SKILL.md +12 -0
  232. package/skills/experience-lightning-out-configure/SKILL.md +129 -0
  233. package/skills/experience-lightning-preview-configure/SKILL.md +67 -0
  234. package/skills/experience-lightning-types-query/SKILL.md +98 -0
  235. package/skills/experience-malware-scan-configure/SKILL.md +71 -0
  236. package/skills/experience-my-salesforce-configure/SKILL.md +126 -0
  237. package/skills/experience-navigation-menus-configure/SKILL.md +235 -0
  238. package/skills/experience-notification-types-configure/SKILL.md +206 -0
  239. package/skills/experience-notifications-configure/SKILL.md +75 -0
  240. package/skills/experience-record-discovery-query/SKILL.md +227 -0
  241. package/skills/experience-regenerate-previews-open/SKILL.md +94 -0
  242. package/skills/experience-sales-cloud-mab-configure/SKILL.md +254 -0
  243. package/skills/experience-schema-builder-open/SKILL.md +38 -0
  244. package/skills/experience-simple-record-home-configure/SKILL.md +110 -0
  245. package/skills/experience-static-resources-configure/SKILL.md +74 -0
  246. package/skills/experience-ui-bundle-2gp-deploy/SKILL.md +1 -3
  247. package/skills/experience-ui-bundle-features-generate/SKILL.md +1 -5
  248. package/skills/experience-ui-bundle-mfa-configure/SKILL.md +1 -3
  249. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +23 -2
  250. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +13 -3
  251. package/skills/field-service-data-capture-migrate/SKILL.md +1 -3
  252. package/skills/field-service-mobile-branding-configure/SKILL.md +17 -3
  253. package/skills/field-service-objective-designer-configure/SKILL.md +72 -379
  254. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +10 -537
  255. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +65 -1093
  256. package/skills/{field-service-setup-orchestrator-get → field-service-setup-coordinate}/SKILL.md +18 -3
  257. package/skills/field-service-sobject-create-configure/SKILL.md +13 -213
  258. package/skills/field-service-voice-to-form-configure/SKILL.md +40 -11
  259. package/skills/field-service-work-plan-configure/SKILL.md +253 -0
  260. package/skills/field-service-work-rule-designer-configure/SKILL.md +121 -95
  261. package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +180 -0
  262. package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +196 -0
  263. package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +106 -0
  264. package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +96 -0
  265. package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +111 -0
  266. package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +250 -0
  267. package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +122 -0
  268. package/skills/fsc-digital-origination-coordinate/SKILL.md +653 -0
  269. package/skills/fsc-digital-origination-demo-run/SKILL.md +225 -0
  270. package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +112 -0
  271. package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +396 -0
  272. package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +336 -0
  273. package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +208 -0
  274. package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +375 -0
  275. package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +83 -0
  276. package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +248 -0
  277. package/skills/fsc-digital-origination-sample-data-create/SKILL.md +206 -0
  278. package/skills/fsc-document-checklist-settings-configure/SKILL.md +57 -0
  279. package/skills/fsc-flexible-hierarchy-configure/SKILL.md +148 -0
  280. package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +1430 -0
  281. package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +471 -0
  282. package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +429 -0
  283. package/skills/fsc-pricing-product-configurator-configure/SKILL.md +150 -0
  284. package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +123 -0
  285. package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +82 -0
  286. package/skills/fsc-product-act3-attributes-create/SKILL.md +249 -0
  287. package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +196 -0
  288. package/skills/fsc-product-act5-considerations-get/SKILL.md +44 -0
  289. package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +384 -0
  290. package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +144 -0
  291. package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +107 -0
  292. package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +189 -0
  293. package/skills/fsc-stage-management-definition-create/SKILL.md +108 -0
  294. package/skills/fsc-stage-management-permissions-assign/SKILL.md +143 -0
  295. package/skills/fsc-stage-management-transitions-configure/SKILL.md +139 -0
  296. package/skills/health-cloud-appt-booking-config-configure/SKILL.md +135 -0
  297. package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +134 -0
  298. package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +136 -0
  299. package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +134 -0
  300. package/skills/health-cloud-care-requests-create/SKILL.md +178 -0
  301. package/skills/health-cloud-initial-configure/SKILL.md +511 -0
  302. package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +1374 -0
  303. package/skills/health-cloud-provider-search-settings-configure/SKILL.md +924 -0
  304. package/skills/health-cloud-referral-management-coordinate/SKILL.md +513 -0
  305. package/skills/health-cloud-timeline-configure/SKILL.md +622 -0
  306. package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +135 -0
  307. package/skills/industries-account-score-settings-query/SKILL.md +78 -0
  308. package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +177 -0
  309. package/skills/industries-ad-product-availability-search/SKILL.md +399 -0
  310. package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +628 -0
  311. package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +73 -0
  312. package/skills/industries-atm-settings-starter-configure/SKILL.md +76 -0
  313. package/skills/industries-batch-document-ai-configure/SKILL.md +196 -0
  314. package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +71 -0
  315. package/skills/industries-branch-management-settings-configure/SKILL.md +89 -0
  316. package/skills/industries-bre-decision-table-access-configure/SKILL.md +367 -0
  317. package/skills/industries-brokerage-settings-configure/SKILL.md +41 -0
  318. package/skills/industries-calendar-sync-settings-configure/SKILL.md +89 -0
  319. package/skills/industries-care-request-settings-configure/SKILL.md +218 -0
  320. package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +54 -0
  321. package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +380 -0
  322. package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +216 -0
  323. package/skills/industries-catalog-process-intake-configure/SKILL.md +219 -0
  324. package/skills/industries-catalog-process-knowledge-configure/SKILL.md +153 -0
  325. package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +168 -0
  326. package/skills/industries-cds-general-settings-configure/SKILL.md +69 -0
  327. package/skills/industries-claim-financial-settings-configure/SKILL.md +169 -0
  328. package/skills/industries-clinical-data-model-settings-configure/SKILL.md +136 -0
  329. package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +105 -0
  330. package/skills/industries-collection-plan-settings-configure/SKILL.md +132 -0
  331. package/skills/industries-comms-service-console-settings-configure/SKILL.md +159 -0
  332. package/skills/industries-compliance-configure/SKILL.md +102 -0
  333. package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +76 -0
  334. package/skills/industries-contact-center-app-layout-configure/SKILL.md +88 -0
  335. package/skills/industries-contact-center-components-configure/SKILL.md +96 -0
  336. package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +95 -0
  337. package/skills/industries-contact-center-user-access-assign/SKILL.md +96 -0
  338. package/skills/industries-course-waitlist-config-configure/SKILL.md +162 -0
  339. package/skills/industries-crisis-center-settings-configure/SKILL.md +84 -0
  340. package/skills/industries-custom-object-settings-configure/SKILL.md +94 -0
  341. package/skills/industries-data-cloud-integration-configure/SKILL.md +88 -0
  342. package/skills/industries-data-space-feature-mappings-configure/SKILL.md +245 -0
  343. package/skills/industries-decision-matrix-builder-configure/SKILL.md +78 -0
  344. package/skills/industries-decision-table-hbase-configure/SKILL.md +87 -0
  345. package/skills/industries-decision-table-version-configure/SKILL.md +74 -0
  346. package/skills/industries-decision-tables-builder-configure/SKILL.md +253 -0
  347. package/skills/industries-decision-tables-configure/SKILL.md +439 -0
  348. package/skills/industries-energy-utilities-configure/SKILL.md +251 -0
  349. package/skills/industries-eu-cloud-multisite-configure/SKILL.md +1008 -0
  350. package/skills/industries-eu-new-connections-configure/SKILL.md +30 -0
  351. package/skills/industries-explainability-msg-template-configure/SKILL.md +135 -0
  352. package/skills/industries-expression-set-message-token-configure/SKILL.md +135 -0
  353. package/skills/industries-field-service-settings-configure/SKILL.md +82 -0
  354. package/skills/industries-form-framework-settings-configure/SKILL.md +30 -0
  355. package/skills/industries-fsc-ai-settings-configure/SKILL.md +57 -0
  356. package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +172 -0
  357. package/skills/industries-fsc-b2b-settings-configure/SKILL.md +61 -0
  358. package/skills/industries-fsc-insurance-settings-configure/SKILL.md +58 -0
  359. package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +103 -0
  360. package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +117 -0
  361. package/skills/industries-fsc-wealth-settings-configure/SKILL.md +99 -0
  362. package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +120 -0
  363. package/skills/industries-fundraising-rfm-configure/SKILL.md +128 -0
  364. package/skills/industries-fundraising-settings-configure/SKILL.md +145 -0
  365. package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +299 -0
  366. package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +87 -0
  367. package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +58 -0
  368. package/skills/industries-hc-score-category-settings-configure/SKILL.md +167 -0
  369. package/skills/industries-health-engagement-settings-configure/SKILL.md +218 -0
  370. package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +131 -0
  371. package/skills/industries-home-health-bundling-policy-create/SKILL.md +50 -0
  372. package/skills/industries-home-health-entity-labels-configure/SKILL.md +29 -0
  373. package/skills/industries-home-health-fsl-package-deploy/SKILL.md +71 -0
  374. package/skills/industries-home-health-fsl-settings-validate/SKILL.md +27 -0
  375. package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +80 -0
  376. package/skills/industries-home-health-guided-setup-configure/SKILL.md +836 -0
  377. package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +55 -0
  378. package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +61 -0
  379. package/skills/industries-home-health-licenses-assign/SKILL.md +27 -0
  380. package/skills/industries-home-health-operating-hours-create/SKILL.md +40 -0
  381. package/skills/industries-home-health-scheduling-policy-create/SKILL.md +41 -0
  382. package/skills/industries-home-health-service-objective-create/SKILL.md +22 -0
  383. package/skills/industries-home-health-skills-create/SKILL.md +31 -0
  384. package/skills/industries-home-health-users-create/SKILL.md +29 -0
  385. package/skills/industries-icm-act3-toggles-configure/SKILL.md +198 -0
  386. package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +361 -0
  387. package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +550 -0
  388. package/skills/industries-integrated-care-management-configure/SKILL.md +168 -0
  389. package/skills/industries-object-enablement-configure/SKILL.md +86 -0
  390. package/skills/industries-tpm-system-processing-service-configure/SKILL.md +64 -0
  391. package/skills/insurance-brokerage-agency-billing-configure/SKILL.md +1 -3
  392. package/skills/integration-apex-settings-configure/SKILL.md +61 -0
  393. package/skills/marketing-e360-email-archiving-configure/SKILL.md +73 -0
  394. package/skills/marketing-message-test/SKILL.md +1 -3
  395. package/skills/nonprofit-fundraising-configure/SKILL.md +240 -0
  396. package/skills/nonprofit-fundraising-configure/references/gotchas.md +26 -0
  397. package/skills/nonprofit-fundraising-configure/references/mcp-invocation.md +678 -0
  398. package/skills/nonprofit-fundraising-configure/references/permission-targeting.md +35 -0
  399. package/skills/nonprofit-volunteer-management-model-get/SKILL.md +166 -0
  400. package/skills/nonprofit-volunteer-management-model-get/references/entities.md +315 -0
  401. package/skills/nonprofit-volunteer-management-model-get/references/relationships.md +175 -0
  402. package/skills/nonprofit-volunteer-management-model-get/references/themes.md +143 -0
  403. package/skills/nonprofit-volunteer-management-records-create/SKILL.md +121 -0
  404. package/skills/nonprofit-volunteer-management-records-create/references/field-guide.md +284 -0
  405. package/skills/nonprofit-volunteer-management-records-create/references/mcp-invocation.md +248 -0
  406. package/skills/nonprofit-volunteer-management-records-create/references/review-format.md +140 -0
  407. package/skills/nonprofit-volunteer-management-records-create/scripts/expand-series.py +632 -0
  408. package/skills/nonprofit-volunteer-management-records-create/scripts/render-review-table.py +419 -0
  409. package/skills/nonprofit-volunteer-management-records-create/scripts/tests/test_expand_series.py +690 -0
  410. package/skills/nonprofit-volunteer-management-records-create/scripts/tests/test_render_review_table.py +421 -0
  411. package/skills/nonprofit-volunteer-management-structure-generate/SKILL.md +119 -0
  412. package/skills/nonprofit-volunteer-management-structure-generate/references/configuration-decisions.md +159 -0
  413. package/skills/nonprofit-volunteer-management-structure-generate/references/discovery-interview.md +137 -0
  414. package/skills/nonprofit-volunteer-management-structure-generate/references/edge-cases.md +48 -0
  415. package/skills/nonprofit-volunteer-management-structure-generate/references/mcp-invocation.md +75 -0
  416. package/skills/nonprofit-volunteer-management-structure-generate/references/plan-output.md +141 -0
  417. package/skills/platform-custom-field-generate/SKILL.md +1 -0
  418. package/skills/platform-custom-field-generate/references/advanced-picklists.md +5 -5
  419. package/skills/platform-custom-metadata-type-generate/SKILL.md +3 -0
  420. package/skills/platform-custom-object-generate/SKILL.md +4 -0
  421. package/skills/platform-custom-permissions-configure/SKILL.md +687 -0
  422. package/skills/platform-custom-setting-generate/SKILL.md +3 -0
  423. package/skills/platform-datamask-run/SKILL.md +1 -5
  424. package/skills/platform-label-workbench-import-create/SKILL.md +67 -0
  425. package/skills/platform-permission-set-generate/SKILL.md +3 -0
  426. package/skills/platform-privacy-agent-settings-configure/SKILL.md +752 -0
  427. package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +1 -3
  428. package/skills/platform-sandbox-configure/SKILL.md +1 -3
  429. package/skills/platform-value-set-generate/SKILL.md +3 -0
  430. package/skills/sales-call-scoring-configure/SKILL.md +1 -5
  431. package/skills/service-agentforce-channel-configure/SKILL.md +1 -3
  432. package/skills/service-agentforce-human-escalation-configure/SKILL.md +1 -3
  433. package/skills/service-catalog-template-coordinate/SKILL.md +1 -3
  434. package/skills/service-concierge-portal-generate/SKILL.md +1 -3
  435. package/skills/service-email-to-case-configure/SKILL.md +1 -5
  436. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/SKILL.md +1 -3
  437. package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +1 -3
  438. package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +1 -3
  439. package/skills/service-itsm-agentic-setup-agentforce-studio-validate/SKILL.md +1 -3
  440. package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +1 -3
  441. package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -5
  442. package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +1 -3
  443. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +1 -3
  444. package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +1 -3
  445. package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +1 -3
  446. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +1 -3
  447. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +1 -0
  448. package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/SKILL.md +1 -3
  449. package/skills/service-itsm-agentic-setup-uel-user-create/SKILL.md +1 -9
  450. package/skills/service-itsm-incident-mgmt-configure/SKILL.md +1 -5
  451. package/skills/service-itsm-incident-priority-configure/SKILL.md +1 -3
  452. package/skills/service-itsm-slack-itservice-configure/SKILL.md +1 -3
  453. package/skills/service-itsm-swarming-configure/SKILL.md +1 -3
  454. package/skills/service-itsm-teams-configure/SKILL.md +1 -3
  455. package/skills/service-itsm-teams-debug/SKILL.md +1 -3
  456. package/skills/service-itsm-teams-employee-agent-configure/SKILL.md +1 -3
  457. package/skills/service-itsm-teams-itdesk-configure/SKILL.md +1 -3
  458. package/skills/service-itsm-teams-itservice-configure/SKILL.md +1 -3
  459. package/skills/service-native-voice-recording-transcription-configure/SKILL.md +1 -3
  460. package/skills/service-omni-agent-users-create/SKILL.md +1 -3
  461. package/skills/service-omni-agent-work-sharing-configure/SKILL.md +1 -3
  462. package/skills/service-omni-attribute-routing-configure/SKILL.md +1 -3
  463. package/skills/service-omni-base-settings-configure/SKILL.md +1 -3
  464. package/skills/service-omni-channel-inventory-analyze/SKILL.md +1 -3
  465. package/skills/service-omni-channel-limits-analyze/SKILL.md +1 -3
  466. package/skills/service-omni-channel-setup-coordinate/SKILL.md +1 -3
  467. package/skills/service-omni-command-center-analyze/SKILL.md +1 -3
  468. package/skills/service-omni-command-center-configure/SKILL.md +1 -3
  469. package/skills/service-omni-permission-set-assign/SKILL.md +1 -3
  470. package/skills/service-omni-presence-status-deploy/SKILL.md +1 -3
  471. package/skills/service-omni-presence-user-config-deploy/SKILL.md +1 -3
  472. package/skills/service-omni-queue-deploy/SKILL.md +1 -3
  473. package/skills/service-omni-queue-members-assign/SKILL.md +1 -3
  474. package/skills/service-omni-queue-routing-config-deploy/SKILL.md +1 -3
  475. package/skills/service-omni-routing-flow-deploy/SKILL.md +1 -3
  476. package/skills/service-omni-service-channel-configure/SKILL.md +1 -3
  477. package/skills/service-omni-sidebar-configure/SKILL.md +1 -3
  478. package/skills/service-omni-skills-based-routing-configure/SKILL.md +1 -3
  479. package/skills/service-omni-supervisor-config-deploy/SKILL.md +1 -3
  480. package/skills/service-omni-supervisor-permset-assign/SKILL.md +1 -3
  481. package/skills/service-omni-supervisor-surface-deploy/SKILL.md +1 -3
  482. package/skills/service-omni-supervisor-users-create/SKILL.md +1 -3
  483. package/skills/service-omni-work-skill-routing-configure/SKILL.md +1 -3
  484. package/skills/tableau-next-asset-create/README.md +0 -65
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: automation-sandbox-post-copy-config-generate
3
- description: "Generate the JSON config file that the Salesforce sandbox post-copy automation tool consumes, from a customer SOP in any format (PDF, xlsx, csv, JSON, docx, Markdown, plain text, or a screenshot of an endpoint table). Use when the user asks to create, build, generate, produce, or convert a post-copy or post-refresh automation config — turning a sandbox-refresh SOP into a JSON array of OutboundMessages, RemoteSiteSettings, and ScheduledApex entries with ConfigurationName, Label, Fields, IsActive, and ExecutionOrder. Also trigger for phrasings like \"post-copy config\", \"post-refresh automation JSON\", \"update the outbound message (OBM) endpoints after refresh\", \"convert this SOP to config\", \"remote site settings JSON\", \"refresh planner to JSON\", or \"sandbox refresh config\". DO NOT TRIGGER when: user wants to deploy the generated config to an org (use platform-metadata-deploy), or apply/execute/run/dry-run the post-copy automation JSON against a sandbox (use automation-sandbox-post-copy-configure)."
3
+ description: "Generates the JSON config file that the Salesforce sandbox post-copy automation tool consumes, from a customer SOP in any format (PDF, xlsx, csv, JSON, docx, Markdown, plain text, or a screenshot of an endpoint table). Use when the user asks to create, build, generate, produce, or convert a post-copy or post-refresh automation config — turning a sandbox-refresh SOP into a JSON array of OutboundMessages (OBM), RemoteSiteSettings, ScheduledApex, and Flows entries with ConfigurationName, Label, Fields, IsActive, and ExecutionOrder. Also trigger for phrasings like \"post-copy config\", \"post-refresh automation JSON\", \"update the outbound message (OBM) endpoints after refresh\", \"convert this SOP to config\", \"remote site settings JSON\", \"refresh planner to JSON\", or \"sandbox refresh config\". DO NOT TRIGGER when: user wants to deploy the generated config to an org (use platform-metadata-deploy), or apply/execute/run/dry-run the post-copy automation JSON against a sandbox (use automation-sandbox-post-copy-configure)."
4
4
  metadata:
5
5
  relatedSkills:
6
6
  - "automation-sandbox-post-copy-configure"
7
7
  - "platform-metadata-deploy"
8
- version: "1.1"
8
+ version: "1.2"
9
9
  domains: ["Automation"]
10
10
  ---
11
11
 
@@ -20,7 +20,7 @@ fields are involved, whether it is active, and what order it runs in.
20
20
 
21
21
  Do **not** compose the output from memory. Before you write the file, you
22
22
  MUST open and read `assets/config_template.json` and copy an entry from it
23
- for each action. Every output entry is exactly one of these three shapes —
23
+ for each action. Every output entry is exactly one of these four shapes —
24
24
  five top-level keys, no others, no wrapper object:
25
25
 
26
26
  ```json
@@ -45,12 +45,21 @@ five top-level keys, no others, no wrapper object:
45
45
  "Fields": { "ApexClassName": "NightlyDataSyncScheduler", "CronExpression": "0 0 2 * * ?", "JobName": "Nightly Data Sync" },
46
46
  "IsActive": true,
47
47
  "ExecutionOrder": 3
48
+ },
49
+ {
50
+ "ConfigurationName": "Flows",
51
+ "Label": "Deactivate Nightly Sync Flow",
52
+ "Fields": { "FlowApiName": "Nightly_Sync_Flow", "Action": "Deactivate" },
53
+ "IsActive": true,
54
+ "ExecutionOrder": 4
48
55
  }
49
56
  ]
50
57
  ```
51
58
 
52
- - `ConfigurationName`: exactly `OutboundMessages`, `RemoteSiteSettings`, or `ScheduledApex` — never `Type`, `Name`, or `Operation`.
53
- - OBM `Fields`: `EndpointUrl` + `Object` (both required). RemoteSite `Fields`: `RemoteSiteUrl` only — never `Url`/`RemoteSiteURL`. ScheduledApex `Fields`: `ApexClassName` + `CronExpression` + `JobName` (all three required).
59
+ - `ConfigurationName`: exactly `OutboundMessages`, `RemoteSiteSettings`, `ScheduledApex`, or `Flows` — these are the ONLY four valid values and they are **plural / PascalCase** (never singular `OutboundMessage`, never `Type` / `Name` / `Operation`).
60
+ - Field keys inside `Fields` are **PascalCase** verbatim: `EndpointUrl`, `Object`, `RemoteSiteUrl`, `ApexClassName`, `CronExpression`, `JobName`, `FlowApiName`, `Action`, `VersionNumber` — never lowercase (`endpointUrl`), never duplicated at the top level (no `isActive`/`Label` inside `Fields` — those already live at the top level of the entry).
61
+ - OBM `Fields`: `EndpointUrl` + `Object` (both required). RemoteSite `Fields`: `RemoteSiteUrl` only — never `Url`/`RemoteSiteURL`. ScheduledApex `Fields`: `ApexClassName` + `CronExpression` + `JobName` (all three required). Flows `Fields`: `FlowApiName` + `Action` (both required); `Action` is exactly `"Activate"` or `"Deactivate"`; optional `VersionNumber` (positive integer) is meaningful only for `Activate`.
62
+ - `ExecutionOrder` is a **phase number**, not a per-row counter. The `1, 2, 3, 4` in the template above only differ because each example is a different entry type. **Multiple entries of the same type with no dependency on each other share the same number** — e.g., three independent OBMs all get `ExecutionOrder: 1`.
54
63
  - Top level is a JSON array. No `steps`/`actions`/`records` wrapper. No `<…>` or `REPLACE_WITH_…` placeholder ever survives into the output.
55
64
 
56
65
  If you announce "I will now write …" without having read the template and
@@ -134,15 +143,15 @@ having read `assets/config_template.json` and
134
143
 
135
144
  3. **Map each action to a `ConfigurationName`** — load
136
145
  `references/configuration_catalog.md`. The catalog currently supports
137
- `OutboundMessages`, `RemoteSiteSettings`, and `ScheduledApex`. Any
138
- action that targets a different configuration type is out of scope:
139
- skip it and list it in the response so the user can extend the
140
- catalog later.
146
+ `OutboundMessages`, `RemoteSiteSettings`, `ScheduledApex`, and
147
+ `Flows`. Any action that targets a different configuration type is
148
+ out of scope: skip it and list it in the response so the user can
149
+ extend the catalog later.
141
150
 
142
151
  4. **Read the JSON template** — load `assets/config_template.json`. It
143
152
  shows the exact required shape of one `OutboundMessages` entry, one
144
- `RemoteSiteSettings` entry, and one `ScheduledApex` entry, with
145
- `<…>` placeholder slots. Copy an entry, replace every `<…>` slot
153
+ `RemoteSiteSettings` entry, one `ScheduledApex` entry, and one
154
+ `Flows` entry, with `<…>` placeholder slots. Copy an entry, replace every `<…>` slot
146
155
  with the concrete SOP value, and keep the exact top-level keys
147
156
  (`ConfigurationName`, `Label`, `Fields`, `IsActive`, `ExecutionOrder`)
148
157
  — never rename them to `Type`, `Name`, `Operation`, etc. Never emit
@@ -183,6 +192,7 @@ having read `assets/config_template.json` and
183
192
  | Information already captured by another field is **not** repeated in `Fields` (e.g., `RemoteSiteName` lives in `Label`, `IsActive` lives at the top level — neither belongs in `Fields`) | Duplicate keys make the entry ambiguous and waste bytes the tool then has to reconcile |
184
193
  | For `OutboundMessages`, `Fields` MUST include both `EndpointUrl` and `Object` (the target SObject — `Account`, `Contact`, `Asset`, `Lead`, etc.) | Same Label can apply to multiple OBMs differing only by entity; `Object` disambiguates them at runtime |
185
194
  | For `RemoteSiteSettings`, the URL key MUST be spelled exactly `RemoteSiteUrl` — never `Url`, `RemoteSiteURL`, `SiteUrl`, or `EndpointUrl` | The post-copy tool matches the field by exact API name; any other spelling means it can't locate the field and the entry silently no-ops at runtime |
195
+ | For `Flows`, `Fields` MUST include `FlowApiName` (the flow's DeveloperName — unique across Flows) and `Action` (exactly `"Activate"` or `"Deactivate"`, case-sensitive). `Fields.VersionNumber` (positive integer) is optional and only meaningful when `Action` is `"Activate"`; if omitted for Activate, the apply-side skill resolves to the latest saved version. | `FlowApiName` is the unique lookup key on `FlowDefinition.DeveloperName`; `Action` is a fixed instruction verb (not a Salesforce field name) that the apply-side skill matches by exact string. Flow labels are not unique — never use them as the lookup. |
186
196
  | `ExecutionOrder` is a phase number — entries with no dependency on each other share the same value | The post-copy tool runs all entries with the same `ExecutionOrder` in parallel; sequencing is only needed where one action depends on another |
187
197
  | `IsActive: false` entries remain in the output (do not delete them) | The customer toggles them on per-environment; deleting loses traceability |
188
198
  | Default `IsActive` to `true` when the SOP marks an action as required | Most SOP steps are required; explicit opt-out is the exception |
@@ -28,5 +28,15 @@
28
28
  },
29
29
  "IsActive": true,
30
30
  "ExecutionOrder": 3
31
+ },
32
+ {
33
+ "ConfigurationName": "Flows",
34
+ "Label": "<Human-readable description, e.g. \"Deactivate Nightly Sync Flow\">",
35
+ "Fields": {
36
+ "FlowApiName": "<Flow DeveloperName — unique across Flows, e.g. Nightly_Sync_Flow>",
37
+ "Action": "Deactivate"
38
+ },
39
+ "IsActive": true,
40
+ "ExecutionOrder": 4
31
41
  }
32
42
  ]
@@ -82,6 +82,37 @@
82
82
  }
83
83
  }
84
84
  }
85
+ },
86
+ {
87
+ "if": {
88
+ "properties": { "ConfigurationName": { "const": "Flows" } }
89
+ },
90
+ "then": {
91
+ "properties": {
92
+ "Fields": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": ["FlowApiName", "Action"],
96
+ "properties": {
97
+ "FlowApiName": {
98
+ "description": "Flow DeveloperName — unique across Flows in the org. Maps to FlowDefinition.DeveloperName. Must match ^[A-Za-z_][A-Za-z0-9_]*$.",
99
+ "type": "string",
100
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
101
+ },
102
+ "Action": {
103
+ "description": "Whether the apply-side skill should Activate or Deactivate the flow. Exact string match, case-sensitive.",
104
+ "type": "string",
105
+ "enum": ["Activate", "Deactivate"]
106
+ },
107
+ "VersionNumber": {
108
+ "description": "Optional. Only meaningful when Action is Activate — the specific flow version to activate. If omitted for Activate, the apply-side skill resolves to the latest saved version. Ignored for Deactivate.",
109
+ "type": "integer",
110
+ "minimum": 1
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
85
116
  }
86
117
  ],
87
118
  "properties": {
@@ -91,7 +122,8 @@
91
122
  "enum": [
92
123
  "OutboundMessages",
93
124
  "RemoteSiteSettings",
94
- "ScheduledApex"
125
+ "ScheduledApex",
126
+ "Flows"
95
127
  ]
96
128
  },
97
129
  "Label": {
@@ -4,11 +4,12 @@ The fixed catalog of supported `ConfigurationName` values for the post-copy
4
4
  automation config. **Never invent a new value** — if an SOP step does not
5
5
  fit a row below, raise it to the user.
6
6
 
7
- The catalog currently covers three types only:
7
+ The catalog currently covers four types only:
8
8
 
9
9
  1. `OutboundMessages`
10
10
  2. `RemoteSiteSettings`
11
11
  3. `ScheduledApex`
12
+ 4. `Flows`
12
13
 
13
14
  Anything else (Custom Labels, Connected Apps, Named Credentials, SSO, etc.)
14
15
  is out of scope for this skill at present — surface them to the user and
@@ -96,6 +97,48 @@ For each post-copy action extracted from the SOP:
96
97
  from the class name or vice versa) — surface the incomplete entry
97
98
  in the response so the user can supply the missing piece.
98
99
 
100
+ ### Flows
101
+
102
+ - **SOP signal phrases**: "flow", "deactivate flow", "activate flow",
103
+ "turn off <FlowName>", "turn on <FlowName>", "Setup > Process Automation
104
+ > Flows", "post-copy flow deactivation", "reactivate flow after refresh".
105
+ - **Field keys**:
106
+ - `FlowApiName` (required) — the flow's DeveloperName, which is unique
107
+ across Flows in the org. Maps to `FlowDefinition.DeveloperName` in
108
+ the Tooling API. Do NOT use the flow label / MasterLabel; labels
109
+ are not unique. If the SOP names a flow by label only, look up the
110
+ API name within the SOP's own accompanying material (an endpoint
111
+ table, companion sheet, screenshot caption) before emitting the
112
+ entry. If the API name cannot be located from the supplied SOP
113
+ sources, **skip the entry and flag it in the summary** — never
114
+ guess or synthesize an API name from the label.
115
+ - `Action` (required) — exactly `"Activate"` or `"Deactivate"` (case-
116
+ sensitive). Verbatim string literal — the apply-side skill matches
117
+ by exact value.
118
+ - `VersionNumber` (optional, positive integer) — meaningful only when
119
+ `Action` is `"Activate"`. Selects which saved flow version to make
120
+ active. If omitted for `Activate`, the apply-side skill resolves to
121
+ the latest saved version. Ignored (and should be omitted) for
122
+ `Deactivate`.
123
+ - **Semantics**:
124
+ - `Action: "Deactivate"` deactivates the flow if it is currently
125
+ active. If it is already inactive, the apply-side skill records
126
+ `ALREADY_INACTIVE` and does not issue a PATCH.
127
+ - `Action: "Activate"` activates the requested version (or the
128
+ latest saved version if `VersionNumber` is omitted). If the flow
129
+ is already active at that version, the apply-side skill records
130
+ `ALREADY_ACTIVE` and does not issue a PATCH.
131
+ - **Do NOT add**:
132
+ - Any other Field key (e.g. `Status`, `ActiveVersionId`,
133
+ `activeVersionNumber`, `Label`). Flow activation/deactivation is
134
+ driven entirely by `Fields.FlowApiName` + `Fields.Action` (+
135
+ optional `Fields.VersionNumber`); the apply-side skill owns the
136
+ Tooling API mutation shape.
137
+ - **Skip when**: the SOP names a flow but does not indicate whether to
138
+ activate or deactivate it, OR the API name (DeveloperName) of the
139
+ flow cannot be determined from the SOP. Never fabricate a
140
+ `FlowApiName` from the label.
141
+
99
142
  ## Adding a new ConfigurationName
100
143
 
101
144
  If a customer SOP introduces a configuration type not in the list above,
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: automation-sandbox-post-copy-configure
3
- description: "Apply a Salesforce sandbox post-copy automation JSON config against a target org. For each entry, the skill derives the correct Tooling API sobject from the entry's `ConfigurationName`, verifies the derivation via a describe probe, resolves the record Id via SOQL-over-REST, then PATCHes the record via the compound `Metadata` field using `sf api request rest`. `ScheduledApex` entries run anonymous Apex `System.schedule(...)` via `sf apex run` (because `CronTrigger` is read-only) and verify via a `CronTrigger` SOQL read-back. Use when the user asks to apply, run, execute, dry-run, or preview a post-copy or post-refresh config file (e.g. `post-copy-config.json`) against a sandbox. Trigger phrases: \"apply post-copy config\", \"run post-copy automation\", \"execute sandbox post-refresh JSON\", \"apply sandbox refresh config\", \"configure sandbox after refresh\". DO NOT TRIGGER for generating the config JSON from an SOP (delegate to `automation-sandbox-post-copy-config-generate`), or for deploying metadata XML."
3
+ description: "Apply a Salesforce sandbox post-copy automation JSON config against a target org. Use when the user asks to apply, run, execute, dry-run, or preview a post-copy or post-refresh config file (e.g. `post-copy-config.json`) against a sandbox — including activating/deactivating a Flow (PATCH `FlowDefinition.Metadata.activeVersionNumber` to the version, or `null`), re-pointing an OBM endpoint, updating a RemoteSiteSetting URL, or re-scheduling a ScheduledApex job after refresh. Also trigger for phrasings like \"apply post-copy config\", \"run post-copy automation\", \"activate Flow <name> post-refresh\", \"deactivate Flow <name>\", \"re-point outbound messages after refresh\", or \"configure sandbox after refresh\". Per entry, derive the Tooling API sobject, verify via describe, resolve the Id via SOQL, then PATCH the compound `Metadata` field (`ScheduledApex` uses anonymous Apex). DO NOT TRIGGER for generating config JSON from an SOP (use `automation-sandbox-post-copy-config-generate`) or for deploying metadata XML."
4
4
  allowed-tools: Bash Read Write
5
5
  metadata:
6
6
  relatedSkills:
7
7
  - "automation-sandbox-post-copy-config-generate"
8
8
  - "dx-org-permission-set-assign"
9
9
  - "platform-metadata-deploy"
10
- version: "1.1"
10
+ version: "1.3"
11
11
  domains: ["Automation"]
12
12
  cliTools:
13
13
  - tool: ["curl"]
@@ -23,31 +23,28 @@ metadata:
23
23
  # Automation: Sandbox Post-Copy Configure
24
24
 
25
25
  Apply a Salesforce sandbox post-copy automation JSON config to a target
26
- org. Three canonical `ConfigurationName` values are pinned:
27
- `OutboundMessages` and `RemoteSiteSettings` take the compound-`Metadata`
28
- PATCH route (Steps A–E); `ScheduledApex` takes the anonymous-Apex route
29
- (Step F), because `CronTrigger` is read-only in the Tooling API. Any
30
- other `ConfigurationName` is derived and describe-verified. Every A–E
31
- entry — pinned or derived — must pass Step B (describe returns 200 with
32
- a `Metadata` compound field) before any PATCH is planned; Step B does
33
- not apply to `ScheduledApex`. Entries whose API cannot be verified are
34
- surfaced in the summary and skipped — never guessed at.
26
+ org. Four canonical `ConfigurationName` values are pinned:
27
+ `OutboundMessages` + `RemoteSiteSettings` → compound-`Metadata` PATCH
28
+ (Steps A–E); `ScheduledApex` → anonymous-Apex (Step F) since
29
+ `CronTrigger` is read-only; `Flows` → flow-activation (Step G), same
30
+ compound-`Metadata` transport as A–E with fixed mutation key
31
+ `activeVersionNumber` + state-aware pre-flight (`ALREADY_ACTIVE` /
32
+ `ALREADY_INACTIVE`). Non-canonical names are derived + describe-verified.
33
+ Every A–E entry must pass Step B (describe 200 + `Metadata` compound
34
+ field) before any PATCH is planned; Step B skipped for `ScheduledApex`.
35
+ Unverified entries are surfaced in the summary and skipped — never
36
+ guessed at.
35
37
 
36
38
  ## Tool Restrictions
37
39
 
38
40
  **Use ONLY the Bash tool** to execute `sf` CLI commands (`sf data query
39
41
  --use-tooling-api`, `sf api request rest`, `sf org display`). Do NOT
40
- use MCP tools like `execute_soql` — ignore them completely; the
41
- compound `Metadata` PATCH pattern this skill requires is not available
42
- through MCP tool wrappers. If the target org alias is not explicitly
43
- named by the user, invoke `sf` commands **without** `--target-org` —
44
- the harness has already set the CLI's default target-org. Never pass
45
- `--target-org default` — `default` is not an alias and will fail with
46
- `NamedOrgNotFoundError`.
47
-
48
- SOQL-over-REST (`sf data query --use-tooling-api ...`) is treated as
49
- an API call — same OAuth session, same authorization boundary as the
50
- subsequent PATCH. No direct database / non-Salesforce SQL access.
42
+ use MCP tools like `execute_soql` — the compound `Metadata` PATCH
43
+ pattern this skill requires is not available through MCP wrappers.
44
+ Invoke `sf` **without** `--target-org` when the user didn't name an
45
+ alias (the harness sets the CLI default); never pass `--target-org
46
+ default` (`NamedOrgNotFoundError`). SOQL-over-REST is same-OAuth —
47
+ no direct DB / non-Salesforce SQL access.
51
48
 
52
49
  ## STOP — do this before making any API call
53
50
 
@@ -93,17 +90,16 @@ substitute a different sobject name):**
93
90
  | `OutboundMessages` | `WorkflowOutboundMessage` | `SELECT Id, FullName FROM WorkflowOutboundMessage WHERE EntityDefinition.QualifiedApiName = '<Fields.Object>'` — then client-side pick the row whose `FullName == '<Fields.Object>.<Label>'`. SOQL cannot filter on `FullName` directly for this sobject. |
94
91
  | `RemoteSiteSettings` | `RemoteProxy` | `SELECT Id, SiteName FROM RemoteProxy WHERE SiteName = '<Label>'`. |
95
92
  | `ScheduledApex` | `CronTrigger` (read-only — Anonymous Apex route, see Step F) | See Step F — pre-flight `SELECT Id FROM CronTrigger WHERE CronJobDetail.Name = '<escaped>'` gate. |
93
+ | `Flows` | `FlowDefinition` (compound-`Metadata` PATCH with fixed `activeVersionNumber` mutation — see Step G) | See Step G — pre-flight `SELECT Id, DeveloperName, ActiveVersion.VersionNumber FROM FlowDefinition WHERE DeveloperName = '<Fields.FlowApiName>'`. |
96
94
 
97
- For canonical entries use the pinned sobject and SOQL as-is; skip
95
+ For canonical entries use the pinned sobject + SOQL as-is; skip
98
96
  "derive". Do not invent `OutboundMessage`, `RemoteSiteSetting`, or
99
- `MasterLabel` variants — plausible-looking but wrong.
100
-
101
- Field-name resolution (overrides + case rule + existence check) is
102
- owned by `scripts/map-metadata-key.mjs`.
97
+ `MasterLabel` variants. Field-name resolution (overrides + case rule
98
+ + existence check) is owned by `scripts/map-metadata-key.mjs`.
103
99
 
104
100
  **Non-canonical**: derive a candidate (usually singular of the
105
- Metadata API type name, sometimes prefixed); Step B rules out wrong
106
- guesses. Use the generic SOQL patterns in Step C.
101
+ Metadata API type name); Step B rules out wrong guesses. Use the
102
+ generic SOQL patterns in Step C.
107
103
 
108
104
  ### Step B — Verify the candidate exists and supports Metadata writes
109
105
 
@@ -174,11 +170,17 @@ Every Step D filename must include the record `<Id>` from Step C
174
170
  the working directory and would clobber a shared name.
175
171
 
176
172
  1. **GET** current `Metadata` → `/tmp/entry-<Id>-meta.json`.
177
- 2. **Resolve the mutation key** — for each `Fields.<Xxx>`, run
173
+ 2. **Resolve the mutation key** (generic path only; `Flows` take
174
+ Step G's fixed `activeVersionNumber` and `ScheduledApex` takes
175
+ Step F's anonymous Apex — never run this script for either) —
176
+ for each `Fields.<Xxx>`, run
178
177
  `node scripts/map-metadata-key.mjs "<ConfigurationName>"
179
178
  "<ConfigFieldName>" /tmp/entry-<Id>-meta.json`. On
180
179
  `{"status":"OK","key":...}` use the returned key. On
181
180
  `{"status":"FIELD_MAP_UNKNOWN",...}` mark the entry and skip.
181
+ Do NOT skip this script and infer via naive first-char-lowercase:
182
+ `RemoteSiteSettings.Fields.RemoteSiteUrl` maps to `Metadata.url`
183
+ (not `remoteSiteUrl`); the script owns such overrides.
182
184
  3. **PATCH** — heredoc-build `/tmp/entry-<Id>-mutation.json`, merge
183
185
  with `jq --slurpfile m /tmp/entry-<Id>-mutation.json
184
186
  '. + $m[0] | {Metadata: .}' /tmp/entry-<Id>-meta.json >
@@ -211,25 +213,34 @@ visible (usually a naming or permission issue).
211
213
 
212
214
  ### Step F — Scheduled Apex (anonymous Apex route)
213
215
 
214
- `ScheduledApex` entries target the read-only `CronTrigger` sobject —
215
- Steps A–E do not apply. **Read `references/scheduled_apex_path.md`
216
- before executing** — it owns the full F-1 → F-4 recipe (pre-flight
217
- AMBIGUOUS gate, snippet build, `sf apex run`, verify, dry-run).
216
+ **Read `references/scheduled_apex_path.md`** — Steps A–E do not apply
217
+ (`CronTrigger` is read-only). The reference owns the F-1→F-4
218
+ anonymous-Apex recipe (pre-flight AMBIGUOUS gate, snippet build,
219
+ `sf apex run`, verify, dry-run) and the Step-F summary shape.
220
+
221
+ ### Step G — Flow activation / deactivation (`Flows`)
222
+
223
+ **Read `references/flow_activation_path.md`** — Steps A + B still
224
+ apply (`FlowDefinition` is the pinned sobject; Step B confirms the
225
+ `Metadata` compound field). The reference owns the G-1→G-4
226
+ compound-`Metadata` PATCH recipe with fixed mutation key
227
+ `activeVersionNumber` (Step D-2 key derivation does NOT apply),
228
+ decision rules (`FlowApiName` validation, `ALREADY_ACTIVE` /
229
+ `ALREADY_INACTIVE` short-circuits, forbidden sibling keys), the
230
+ dry-run contract, and the Flows summary shape.
218
231
 
219
232
  ---
220
233
 
221
234
  ## IsActive semantics
222
235
 
223
- - `IsActive: true` → apply the PATCH as described in Steps A–E.
236
+ - `IsActive: true` → PATCH per Steps A–E (or Step G for `Flows`).
224
237
  - `IsActive: false` → **do not PATCH**. Record `SKIPPED_INACTIVE`
225
- for the entry and add a bullet under **Follow-ups** in the summary
226
- file listing the entry's `ConfigurationName` + `Label` so the
227
- customer notices that a config-declared inactive record was left
228
- untouched on the target org.
238
+ and add a Follow-ups bullet with the entry's `ConfigurationName`
239
+ + `Label` so the customer sees it was left untouched.
229
240
 
230
241
  Rationale: `IsActive: false` means "not active in this sandbox",
231
- not "deactivate the existing record". Silently deactivating a live
232
- integration is a much bigger blast radius than leaving it alone.
242
+ not "deactivate the existing record" — silently deactivating a
243
+ live integration is a much larger blast radius than leaving it.
233
244
 
234
245
  ---
235
246
 
@@ -240,6 +251,11 @@ Single Markdown summary written to `./post-copy-<mode>-summary.md`
240
251
  side-files (`plan/phases.json`, `requests/*.request.json`, etc.) —
241
252
  inline every planned/actual request in the Markdown.
242
253
 
254
+ **`Flows` and `ScheduledApex` use step-specific summary shapes** —
255
+ labeled narrative blocks that REPLACE the generic `Planned request:`
256
+ block below (phase table unchanged); see each reference's "Summary
257
+ shape" section. All other `ConfigurationName`s use the generic shape.
258
+
243
259
  **Phase enumeration is script-owned.** Run `node scripts/plan-phases.mjs
244
260
  <config.json>` and consume its `phases[]` verbatim — each entry carries
245
261
  `ordinal` (1-indexed for headings) and `executionOrder` (raw, for
@@ -268,7 +284,7 @@ Mode: <dry-run|apply>
268
284
  Planned request:
269
285
  - Method: `PATCH`
270
286
  - Path: `/services/data/v<apiVersion>/tooling/sobjects/<VerifiedSobject>/<Id>`
271
- - Body: `<JSON — the FULL merged Metadata object: every existing key from the Step D-1 GET, overlaid with the mutated keys from the config. Preserved keys with verbose or org-specific values may appear as "<preserved-from-GET>" placeholder strings, but every key must be present. NEVER emit a minimal body containing only the mutated keys.>`
287
+ - Body: `<FULL merged Metadata: every key from the Step D-1 GET overlaid with the mutated keys. Verbose/org-specific values may render as "<preserved-from-GET>", but every key must be present. NEVER emit a minimal body.>`
272
288
 
273
289
  | ConfigurationName | Label | Object | Sobject | Describe | Outcome | HTTP |
274
290
  |-------------------|-------|--------|---------|----------|---------|------|
@@ -285,36 +301,32 @@ Planned request:
285
301
  - <bullet per SKIPPED_INACTIVE / API_NOT_IDENTIFIED / AMBIGUOUS / FIELD_MAP_UNKNOWN / NOT_FOUND entry>
286
302
  ```
287
303
 
288
- Column semantics: `Object` = the entry's `Fields.Object` if present,
289
- `—` otherwise. `Sobject` = the Step A resolved sobject. `Describe` =
290
- the Step B describe HTTP status (`200` for verified, `404` for
291
- `API_NOT_IDENTIFIED`) — mandatory so skipped Step Bs are visible at a
292
- glance. Outcome vocabulary: `SUCCESS`, `NOT_FOUND`, `AMBIGUOUS`,
304
+ Column semantics: `Object` = entry's `Fields.Object` or `—`. `Sobject`
305
+ = Step A resolved sobject. `Describe` = Step B HTTP status (`200`
306
+ verified, `404` → `API_NOT_IDENTIFIED`) — mandatory so skipped Step Bs
307
+ are visible. Outcome vocabulary: `SUCCESS`, `NOT_FOUND`, `AMBIGUOUS`,
293
308
  `API_NOT_IDENTIFIED`, `FIELD_MAP_UNKNOWN`, `FAILED`, `FAILED_VERIFY`,
294
309
  `SKIPPED_INACTIVE`, `SKIPPED`, `DRY_RUN`, `DELETE_NOT_SUPPORTED`,
310
+ `ALREADY_ACTIVE` (Flows: requested version already active — no PATCH),
311
+ `ALREADY_INACTIVE` (Flows: Deactivate but already inactive — no PATCH),
295
312
  `NOT_ATTEMPTED`.
296
313
 
297
- **Scripts are internal.** Do **not** inline raw `node scripts/…` stdout
298
- or "I ran node …" narration into the summary or the printed response —
299
- consume the JSON, use the returned values, render the exact shape above.
314
+ **Scripts are internal** — never inline raw `node scripts/…` stdout or
315
+ "I ran node …" narration into the summary; consume the JSON, use the
316
+ returned values, render the exact shape above.
300
317
 
301
318
  ## Scope
302
319
 
303
- - **In scope**: Reading a post-copy config JSON (the shape produced
304
- by `automation-sandbox-post-copy-config-generate`), grouping entries
305
- into `ExecutionOrder` phases, deriving+verifying the Tooling API
306
- sobject for each entry, resolving Ids via SOQL-over-REST, PATCHing
307
- via compound `Metadata`, and reporting per-entry outcomes.
320
+ - **In scope**: Apply a post-copy config JSON against a live org —
321
+ phase-group by `ExecutionOrder`, derive+verify sobject, resolve Id
322
+ via SOQL-over-REST, PATCH via compound `Metadata`, report outcomes.
308
323
  - **Out of scope**: Generating the config JSON from an SOP (delegate
309
- to `automation-sandbox-post-copy-config-generate`); deploying
310
- metadata XML; running the Async Task Framework (ATF) orchestrator
311
- itself (that is the platform-side Java implementation); inventing
312
- API paths for `ConfigurationName` values whose describe probe
313
- fails (surface as `API_NOT_IDENTIFIED` and stop).
324
+ to `automation-sandbox-post-copy-config-generate`); metadata-XML
325
+ deploys; the ATF Java orchestrator; guessing an API path for an
326
+ entry whose describe probe fails (`API_NOT_IDENTIFIED` → stop).
314
327
 
315
- Every API call is against a live org. Treat this skill as a mutation
316
- tool: prefer `--dry-run` first, confirm the target org alias, and
317
- never silently retry a failed entry against a different endpoint.
328
+ Live-org mutation tool: prefer `--dry-run` first; never silently
329
+ retry a failed entry against a different endpoint.
318
330
 
319
331
  ---
320
332
 
@@ -322,25 +334,21 @@ never silently retry a failed entry against a different endpoint.
322
334
 
323
335
  Gather or infer before applying:
324
336
 
325
- - **Config file path**: Path to the JSON produced by
326
- `automation-sandbox-post-copy-config-generate` (default:
327
- `./post-copy-config.json` in the current directory). If the file
328
- does not exist, stop and ask.
329
- - **Target org alias / username**: The `sf` CLI alias or username of
330
- the target sandbox. Never assume the default org — always confirm.
331
- If the user has not supplied one, list available orgs with `sf org
332
- list --json` and ask which to use.
333
- - **Dry-run flag** (optional, default `false`): **reads ALLOWED, writes
334
- FORBIDDEN** — not "no network calls". Still run every read (Step B
335
- describe `GET`, Step C SOQL, Step D-1 record `GET`); the plan's
336
- would-be PATCH body is only accurate against the real Metadata block.
337
- The ONLY skipped calls are Step D-3 (`PATCH`) and Step E (verify).
338
- Never fabricate current Metadata or invent keys. On a read failure
339
- (401, 404, `NamedOrgNotFoundError`), surface and stop — never fall
340
- back to a from-memory plan. Prefer dry-run on the first pass.
341
- - **Continue-on-error** (optional, default `true`): true = failing
342
- entries don't abort the phase (failure reported in the summary);
343
- false = abort mid-phase.
337
+ - **Config file path**: JSON from
338
+ `automation-sandbox-post-copy-config-generate` (default
339
+ `./post-copy-config.json`). Missing → stop and ask.
340
+ - **Target org alias / username**: Never assume the default; if not
341
+ supplied, list via `sf org list --json` and ask.
342
+ - **Dry-run flag** (default `false`): **reads ALLOWED, writes
343
+ FORBIDDEN** — not "no network calls". Still run Step B describe
344
+ GET, Step C SOQL, Step D-1 GET; the plan's would-be PATCH body is
345
+ only accurate against the real Metadata block. Steps D-3 (PATCH)
346
+ and E (verify) are skipped (Flows: see Step G — G-3 GET + PATCH
347
+ both skip, G-1 + G-2 still run). On a read failure (401, 404,
348
+ `NamedOrgNotFoundError`) surface and stop — never fall back to a
349
+ from-memory plan. Prefer dry-run on the first pass.
350
+ - **Continue-on-error** (default `true`): true = failing entries
351
+ don't abort the phase; false = abort mid-phase.
344
352
 
345
353
  If the user supplies a clear config path and target alias, proceed
346
354
  without further questions.
@@ -349,49 +357,48 @@ without further questions.
349
357
 
350
358
  ## Workflow
351
359
 
352
- Every step executes real `sf` CLI commands via Bash. Do NOT narrate the
360
+ Every step executes real `sf` CLI commands via Bash. Never narrate the
353
361
  plan without running the commands — this skill mutates the target org.
354
362
 
355
- 1. **Read and validate the config JSON** — load the file with the
356
- Read tool. Every entry must be a JSON object with the five
357
- top-level keys (`ConfigurationName`, `Label`, `Fields`,
358
- `IsActive`, `ExecutionOrder`). Malformed entries are a hard stop.
363
+ 1. **Read + validate the config JSON** — load with the Read tool.
364
+ Every entry needs the five top-level keys; malformed → hard stop.
359
365
 
360
- 2. **Resolve the target org and API version** — run
361
- `sf org display --json`. Parse the JSON to confirm the alias
362
- resolves and to capture `result.apiVersion` (e.g. `62.0`). Do not
363
- print the raw JSON — it contains the access token.
366
+ 2. **Resolve target org + API version** — `sf org display --json`.
367
+ Parse to confirm alias resolves and capture `result.apiVersion`.
368
+ Do not print the raw JSON — it contains the access token.
364
369
 
365
370
  3. **Plan phases** — run `node scripts/plan-phases.mjs <config.json>`
366
371
  and iterate its `phases[]` output. See
367
372
  `references/execution_phasing.md` for the concurrency cap.
368
373
 
369
- 4. **Per-entry describe-verify pass** — for each distinct
370
- `ConfigurationName` NOT equal to `ScheduledApex`, run Step A +
371
- Step B once and cache the verified sobject. Any `ConfigurationName`
372
- failing Step B marks every entry with that name as
373
- `API_NOT_IDENTIFIED`. `ScheduledApex` skips describe-verify — it
374
- uses the Anonymous Apex route (Step F), not compound-`Metadata`
375
- PATCH.
374
+ 4. **Per-entry describe-verify** — for each distinct
375
+ `ConfigurationName` ≠ `ScheduledApex`, run Step A + Step B once
376
+ and cache the verified sobject. Step B failure → every entry with
377
+ that name is `API_NOT_IDENTIFIED`. `ScheduledApex` skips
378
+ describe-verify (Step F uses anonymous Apex, not compound
379
+ Metadata). `Flows` DOES run describe-verify (PATCH transport is
380
+ compound-Metadata on `FlowDefinition`); it skips only Step D's
381
+ mutation-key derivation (Step G-3 uses a fixed key).
376
382
 
377
383
  5. **Per-entry apply pass** — for each entry inside each phase:
378
- - `SKIP_INACTIVE` pre-marked by plan-phases → record
379
- `SKIPPED_INACTIVE`, add a Follow-ups bullet, continue.
380
- - `ScheduledApex` → Step F (F-1 pre-flight, F-2 build, F-3 run,
381
- F-4 verify). Dry-run: run F-1 + F-2 only; record `DRY_RUN`.
384
+ - `SKIP_INACTIVE` from plan-phases → `SKIPPED_INACTIVE` +
385
+ Follow-ups bullet, continue.
386
+ - `ScheduledApex` → Step F (F-1→F-4). Dry-run: F-1 + F-2 only;
387
+ record `DRY_RUN`.
388
+ - `Flows` → Step G (G-1→G-4). `ALREADY_ACTIVE` /
389
+ `ALREADY_INACTIVE` pre-flight bypasses the PATCH. Dry-run:
390
+ G-1 + G-2 only; record `DRY_RUN`.
382
391
  - All others → Step C (Id), Step D (GET+mutate+PATCH), Step E
383
- (verify). Dry-run: run C + D-1/D-2 (so the printed plan reflects
384
- the real merged payload); skip D-3 and E; record `DRY_RUN`.
392
+ (verify). Dry-run: C + D-1/D-2 only; record `DRY_RUN`.
385
393
 
386
394
  6. **Between phases** — wait for every entry in the current phase to
387
395
  complete before starting the next.
388
396
 
389
- 7. **Write the summary file to disk** — the final deliverable is a
390
- Markdown file at `./post-copy-<mode>-summary.md`, following the
391
- shape in the "Canonical output shape" section. Also print it to
392
- the user. Never write access tokens or full `sf org display`
393
- output. If a URL contains embedded credentials, mask them in the
394
- summary (`https://user:***@host/...`); the actual PATCH body
397
+ 7. **Write the summary file** — Markdown at
398
+ `./post-copy-<mode>-summary.md`, per the "Canonical output shape"
399
+ section; also print to the user. Never write access tokens or raw
400
+ `sf org display` output. Mask embedded URL credentials in the
401
+ summary (`https://user:***@host/...`); the real PATCH body
395
402
  carries the verbatim URL.
396
403
 
397
404
  ---
@@ -424,19 +431,20 @@ that file before deviating from the Step A–E procedure.
424
431
 
425
432
  | File | When to read |
426
433
  |------|-------------|
427
- | `references/api_endpoints.md` | Steps A–E — full generic recipe with OBM / RSS worked examples and the camelCase-field convention |
428
- | `references/scheduled_apex_path.md` | Step F — anonymous Apex route for `ScheduledApex` entries |
429
- | `references/execution_phasing.md` | Step 3 (workflow) — phase-grouping model behind `scripts/plan-phases.mjs` |
430
- | `references/authentication.md` | Step 2 — session check + how to handle 401 mid-run |
431
- | `references/rules_gotchas.md` | Before deviating from Step A–E — invariants and runtime-failure responses |
432
- | `scripts/plan-phases.mjs` | Step 3 — deterministic phase planner |
433
- | `scripts/map-metadata-key.mjs` | Step D-2 — deterministic Metadata-key resolver |
434
- | `scripts/classify-patch-result.mjs` | Step D-4 — deterministic HTTP-outcome classifier |
435
- | `scripts/resolve-target-org.mjs` | Canonical output shape — target-org alias resolver |
434
+ | `references/api_endpoints.md` | Steps A–E — full generic recipe + OBM/RSS worked examples |
435
+ | `references/scheduled_apex_path.md` | Step F — anonymous Apex route for `ScheduledApex` |
436
+ | `references/flow_activation_path.md` | Step G — flow activation / deactivation (`Flows`) |
437
+ | `references/execution_phasing.md` | Step 3 — phase-grouping model behind `plan-phases.mjs` |
438
+ | `references/authentication.md` | Step 2 — session check + 401 mid-run handling |
439
+ | `references/rules_gotchas.md` | Before deviating from Step A–E — invariants + failure responses |
440
+ | `scripts/plan-phases.mjs` | Step 3 — phase planner |
441
+ | `scripts/map-metadata-key.mjs` | Step D-2 — Metadata-key resolver |
442
+ | `scripts/classify-patch-result.mjs` | Step D-4 — HTTP-outcome classifier |
443
+ | `scripts/resolve-target-org.mjs` | Output shape — target-org alias resolver |
436
444
  | `scripts/build-scheduled-apex.mjs` | Step F-2 — anonymous-Apex snippet builder |
437
445
  | `scripts/soql-escape-job-name.mjs` | Step F-1/F-4 — SOQL-escape `JobName` |
438
- | `assets/api_request_templates.json` | Steps A–E — generic describe / lookup / GET+PATCH template |
439
- | `assets/scheduled_apex_template.apex` | Step F-2 — anonymous Apex template with `{{JOB_NAME}}` / `{{CRON_EXPRESSION}}` / `{{APEX_CLASS_NAME}}` placeholders |
440
- | `examples/sample_config_input.json` | Step 1 — shape of the config JSON this skill consumes |
441
- | `examples/sample_scheduled_apex_config.json` | Step 1 — shape of a `ScheduledApex` config entry |
442
- | `examples/sample_execution_summary.md` | Step 7 — shape of the summary report shown to the user |
446
+ | `assets/api_request_templates.json` | Steps A–E — describe/lookup/GET+PATCH template |
447
+ | `assets/scheduled_apex_template.apex` | Step F-2 — anonymous Apex template |
448
+ | `examples/sample_config_input.json` | Step 1 — config JSON shape |
449
+ | `examples/sample_scheduled_apex_config.json` | Step 1 — `ScheduledApex` entry shape |
450
+ | `examples/sample_execution_summary.md` | Step 7 — summary report shape |