@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.
- package/package.json +1 -1
- package/skills/agentforce-gpt-email-generation-configure/SKILL.md +312 -0
- package/skills/agentforce-offline-experimentation-run/SKILL.md +253 -0
- package/skills/agentforce-offline-experimentation-run/scripts/build_report.py +796 -0
- package/skills/agentforce-offline-experimentation-run/scripts/resolve-token.sh +111 -0
- package/skills/agentforce-offline-experimentation-run/scripts/sfap_replay.py +1053 -0
- package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +64 -0
- package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +46 -0
- package/skills/automation-company-profile-info-query/SKILL.md +51 -0
- package/skills/automation-digital-wallet-configure/SKILL.md +689 -0
- package/skills/automation-flow-coordinate/SKILL.md +95 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +1569 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +96 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +23 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +31 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +179 -0
- package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +13 -0
- package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +83 -0
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +69 -0
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +274 -0
- package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +192 -0
- package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +130 -0
- package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +92 -0
- package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +88 -0
- package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +152 -0
- package/skills/automation-flow-coordinate/references/elements/start/start.md +539 -0
- package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +152 -0
- package/skills/automation-flow-coordinate/references/elements/wait/wait.md +497 -0
- package/skills/automation-flow-coordinate/references/recipes/author/author.md +868 -0
- package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +300 -0
- package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +292 -0
- package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +323 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +109 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +219 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +180 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +175 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +255 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +212 -0
- package/skills/automation-flow-coordinate/references/resources/variable/variable.md +171 -0
- package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +786 -0
- package/skills/automation-flow-coordinate/references/shared/end/end.md +267 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +69 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +80 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +116 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +321 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +320 -0
- package/skills/automation-flow-coordinate/references/shared/server-functions.md +597 -0
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +21 -11
- package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +10 -0
- package/skills/automation-sandbox-post-copy-config-generate/assets/json_schema.json +33 -1
- package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md +44 -1
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +132 -124
- package/skills/automation-sandbox-post-copy-configure/references/flow_activation_path.md +151 -0
- package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +55 -9
- package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +69 -0
- package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +78 -0
- package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +373 -0
- package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +273 -0
- package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +259 -0
- package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +369 -0
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +542 -0
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +159 -0
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +349 -0
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +505 -0
- package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +380 -0
- package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +567 -0
- package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +159 -0
- package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +360 -0
- package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +539 -0
- package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +358 -0
- package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +602 -0
- package/skills/commerce-b2b-store-configure/SKILL.md +251 -0
- package/skills/commerce-credit-memo-create/SKILL.md +139 -0
- package/skills/commerce-delivery-business-hours-configure/SKILL.md +277 -0
- package/skills/commerce-delivery-estimation-apply/SKILL.md +155 -0
- package/skills/commerce-delivery-estimation-configure/SKILL.md +377 -0
- package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +174 -0
- package/skills/commerce-estimate-bopis-query/SKILL.md +279 -0
- package/skills/commerce-estimate-delivery-date-query/SKILL.md +349 -0
- package/skills/commerce-fees-apply/SKILL.md +227 -0
- package/skills/commerce-fulfillment-routing-analyze/SKILL.md +200 -0
- package/skills/commerce-guest-buyer-create/SKILL.md +173 -0
- package/skills/commerce-location-bopis-configure/SKILL.md +378 -0
- package/skills/commerce-location-business-hours-configure/SKILL.md +235 -0
- package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +309 -0
- package/skills/commerce-location-graph-integrate/SKILL.md +131 -0
- package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +755 -0
- package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +331 -0
- package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +579 -0
- package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +626 -0
- package/skills/commerce-merchant-catalog-configure/SKILL.md +614 -0
- package/skills/commerce-merchant-extension-provider-configure/SKILL.md +368 -0
- package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +118 -0
- package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +65 -0
- package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +90 -0
- package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +72 -0
- package/skills/commerce-merchant-insights-query/SKILL.md +279 -0
- package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +656 -0
- package/skills/commerce-order-summary-change-apply/SKILL.md +375 -0
- package/skills/commerce-product-details-get/SKILL.md +363 -0
- package/skills/commerce-product-search/SKILL.md +563 -0
- package/skills/commerce-react-storefront-create/SKILL.md +350 -0
- package/skills/commerce-return-order-summary-create/SKILL.md +513 -0
- package/skills/commerce-search-relevance-analyze/SKILL.md +757 -0
- package/skills/commerce-temporary-processing-time-override-create/SKILL.md +274 -0
- package/skills/communications-initial-setup-configure/SKILL.md +630 -0
- package/skills/communications-multisite-configure/SKILL.md +571 -0
- package/skills/communications-revenue-cloud-settings-configure/SKILL.md +74 -0
- package/skills/communications-smb-fiber-catalog-create/SKILL.md +413 -0
- package/skills/communications-tmf-integrate/SKILL.md +1368 -0
- package/skills/consumer-goods-promotion-bo-api-deploy/SKILL.md +54 -107
- package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/payloads/copy.json +1 -1
- package/skills/consumer-goods-promotion-bo-api-deploy/references/conventions-and-payload-rules.md +82 -5
- package/skills/consumer-goods-promotion-bo-api-deploy/references/generate-and-wire.md +35 -2
- package/skills/consumer-goods-promotion-bo-api-deploy/references/preflight-and-seed-queries.md +149 -0
- package/skills/consumer-goods-promotion-bo-api-deploy/references/smoke-and-verify.md +17 -1
- package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +448 -0
- package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +269 -0
- package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +271 -0
- package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +382 -0
- package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +373 -0
- package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +389 -0
- package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +338 -0
- package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +547 -0
- package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +346 -0
- package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +1110 -0
- package/skills/crm-analytics-adoption-insights-configure/SKILL.md +224 -0
- package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +418 -0
- package/skills/crm-analytics-dashboards-configure/SKILL.md +731 -0
- package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +233 -0
- package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +184 -0
- package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +167 -0
- package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +55 -0
- package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +1350 -0
- package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +1862 -0
- package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +83 -0
- package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +81 -0
- package/skills/data360-activation-create/SKILL.md +104 -0
- package/skills/data360-activation-external-platform-get/SKILL.md +49 -0
- package/skills/data360-activation-target-create/SKILL.md +93 -0
- package/skills/data360-activation-v2-create/SKILL.md +456 -0
- package/skills/data360-audience-dmo-get/SKILL.md +38 -0
- package/skills/data360-calculated-affinity-create/SKILL.md +82 -0
- package/skills/data360-calculated-insight-create/SKILL.md +148 -0
- package/skills/data360-catalog-metadata-create/SKILL.md +183 -0
- package/skills/data360-code-extension-create/SKILL.md +115 -0
- package/skills/data360-communication-capping-create/SKILL.md +227 -0
- package/skills/data360-connection-create/SKILL.md +491 -0
- package/skills/data360-content-lens-create/SKILL.md +181 -0
- package/skills/data360-data-action-create/SKILL.md +126 -0
- package/skills/data360-data-action-target-create/SKILL.md +181 -0
- package/skills/data360-data-clean-room-create/SKILL.md +238 -0
- package/skills/data360-data-governance-create/SKILL.md +746 -0
- package/skills/data360-data-graph-create/SKILL.md +82 -0
- package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +38 -0
- package/skills/data360-data-lake-object-create/SKILL.md +207 -0
- package/skills/data360-data-model-object-catalog-get/SKILL.md +49 -0
- package/skills/data360-data-model-object-create/SKILL.md +128 -0
- package/skills/data360-data-model-object-mapping-create/SKILL.md +106 -0
- package/skills/data360-data-space-create/SKILL.md +161 -0
- package/skills/data360-data-streams-create/SKILL.md +324 -0
- package/skills/data360-engagement-signal-get/SKILL.md +38 -0
- package/skills/data360-experiment-create/SKILL.md +82 -0
- package/skills/data360-goal-based-campaign-create/SKILL.md +192 -0
- package/skills/data360-harmonization-process-history-get/SKILL.md +38 -0
- package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +84 -0
- package/skills/data360-identity-resolution-create/SKILL.md +115 -0
- package/skills/data360-intelligent-document-processing-create/SKILL.md +148 -0
- package/skills/data360-knowledge-graph-construction-create/SKILL.md +93 -0
- package/skills/data360-knowledge-graph-create/SKILL.md +216 -0
- package/skills/data360-knowledge-space-mcp-configure/SKILL.md +475 -0
- package/skills/data360-machine-learning-mcp-configure/SKILL.md +697 -0
- package/skills/data360-multi-org-mcp-configure/SKILL.md +117 -0
- package/skills/data360-secondary-index-mcp-configure/SKILL.md +126 -0
- package/skills/data360-segment-mcp-configure/SKILL.md +159 -0
- package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +38 -0
- package/skills/data360-semantic-engine-mcp-configure/SKILL.md +62 -0
- package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +38 -0
- package/skills/data360-semantic-metric-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-model-mcp-configure/SKILL.md +115 -0
- package/skills/data360-standard-mapping-mcp-configure/SKILL.md +38 -0
- package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +73 -0
- package/skills/dx-devops-conflict-resolve/SKILL.md +1 -5
- package/skills/dx-devops-pipeline-manage/SKILL.md +1 -5
- package/skills/dx-devops-project-manage/SKILL.md +1 -5
- package/skills/dx-devops-promote/SKILL.md +1 -5
- package/skills/dx-devops-request-status/SKILL.md +1 -5
- package/skills/dx-lifecycle-center/SKILL.md +120 -0
- package/skills/dx-lifecycle-center/examples/workflows.md +175 -0
- package/skills/dx-lifecycle-center/references/connect-api.md +123 -0
- package/skills/dx-lifecycle-center/references/connect-org.md +184 -0
- package/skills/dx-lifecycle-center/references/deploy.md +153 -0
- package/skills/dx-lifecycle-center/references/error-handling.md +21 -0
- package/skills/dx-lifecycle-center/references/hub-org.md +37 -0
- package/skills/dx-lifecycle-center/references/list-orgs.md +99 -0
- package/skills/dx-lifecycle-center/references/request-body.md +75 -0
- package/skills/dx-lifecycle-center/references/troubleshooting.md +31 -0
- package/skills/dx-lifecycle-center/scripts/poll-deploy-status.sh +200 -0
- package/skills/dx-lifecycle-center/scripts/resolve-environment.sh +120 -0
- package/skills/dx-org-devhub-configure/SKILL.md +1 -3
- package/skills/dx-org-shape-manage/SKILL.md +1 -5
- package/skills/dx-org-snapshot-manage/SKILL.md +1 -3
- package/skills/education-cloud-academic-calendar-generate/SKILL.md +1 -3
- package/skills/education-cloud-course-catalog-migrate/SKILL.md +1 -3
- package/skills/education-cloud-domain-configure/SKILL.md +1 -3
- package/skills/education-cloud-multi-campus-configure/SKILL.md +1 -3
- package/skills/education-cloud-student-recruitment-agent-configure/SKILL.md +1 -5
- package/skills/experience-afv-query/SKILL.md +234 -0
- package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +63 -0
- package/skills/experience-apex-components-configure/SKILL.md +69 -0
- package/skills/experience-apex-pages-configure/SKILL.md +107 -0
- package/skills/experience-app-home-configure/SKILL.md +76 -0
- package/skills/experience-aura-lightning-out-access-configure/SKILL.md +58 -0
- package/skills/experience-briefcase-configure/SKILL.md +287 -0
- package/skills/experience-community-flexi-page-list-create/SKILL.md +74 -0
- package/skills/experience-community-template-definition-list-query/SKILL.md +48 -0
- package/skills/experience-community-theme-definition-list-query/SKILL.md +38 -0
- package/skills/experience-content-assets-configure/SKILL.md +86 -0
- package/skills/experience-custom-domain-create/SKILL.md +727 -0
- package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +41 -0
- package/skills/experience-field-service-app-builder-configure/SKILL.md +187 -0
- package/skills/experience-flow-category-configure/SKILL.md +117 -0
- package/skills/experience-formula-configure/SKILL.md +358 -0
- package/skills/experience-global-actions-configure/SKILL.md +69 -0
- package/skills/experience-global-publisher-layouts-configure/SKILL.md +79 -0
- package/skills/experience-instrumentation-configure/SKILL.md +64 -0
- package/skills/experience-lex-engagement-configure/SKILL.md +50 -0
- package/skills/experience-lightning-bolt-open/SKILL.md +12 -0
- package/skills/experience-lightning-out-configure/SKILL.md +129 -0
- package/skills/experience-lightning-preview-configure/SKILL.md +67 -0
- package/skills/experience-lightning-types-query/SKILL.md +98 -0
- package/skills/experience-malware-scan-configure/SKILL.md +71 -0
- package/skills/experience-my-salesforce-configure/SKILL.md +126 -0
- package/skills/experience-navigation-menus-configure/SKILL.md +235 -0
- package/skills/experience-notification-types-configure/SKILL.md +206 -0
- package/skills/experience-notifications-configure/SKILL.md +75 -0
- package/skills/experience-record-discovery-query/SKILL.md +227 -0
- package/skills/experience-regenerate-previews-open/SKILL.md +94 -0
- package/skills/experience-sales-cloud-mab-configure/SKILL.md +254 -0
- package/skills/experience-schema-builder-open/SKILL.md +38 -0
- package/skills/experience-simple-record-home-configure/SKILL.md +110 -0
- package/skills/experience-static-resources-configure/SKILL.md +74 -0
- package/skills/experience-ui-bundle-2gp-deploy/SKILL.md +1 -3
- package/skills/experience-ui-bundle-features-generate/SKILL.md +1 -5
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +1 -3
- package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +23 -2
- package/skills/field-service-data-capture-form-designer-configure/SKILL.md +13 -3
- package/skills/field-service-data-capture-migrate/SKILL.md +1 -3
- package/skills/field-service-mobile-branding-configure/SKILL.md +17 -3
- package/skills/field-service-objective-designer-configure/SKILL.md +72 -379
- package/skills/field-service-prework-brief-deployer-configure/SKILL.md +10 -537
- package/skills/field-service-scheduling-policy-designer-query/SKILL.md +65 -1093
- package/skills/{field-service-setup-orchestrator-get → field-service-setup-coordinate}/SKILL.md +18 -3
- package/skills/field-service-sobject-create-configure/SKILL.md +13 -213
- package/skills/field-service-voice-to-form-configure/SKILL.md +40 -11
- package/skills/field-service-work-plan-configure/SKILL.md +253 -0
- package/skills/field-service-work-rule-designer-configure/SKILL.md +121 -95
- package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +180 -0
- package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +196 -0
- package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +106 -0
- package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +96 -0
- package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +111 -0
- package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +250 -0
- package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +122 -0
- package/skills/fsc-digital-origination-coordinate/SKILL.md +653 -0
- package/skills/fsc-digital-origination-demo-run/SKILL.md +225 -0
- package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +112 -0
- package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +396 -0
- package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +336 -0
- package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +208 -0
- package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +375 -0
- package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +83 -0
- package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +248 -0
- package/skills/fsc-digital-origination-sample-data-create/SKILL.md +206 -0
- package/skills/fsc-document-checklist-settings-configure/SKILL.md +57 -0
- package/skills/fsc-flexible-hierarchy-configure/SKILL.md +148 -0
- package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +1430 -0
- package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +471 -0
- package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +429 -0
- package/skills/fsc-pricing-product-configurator-configure/SKILL.md +150 -0
- package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +123 -0
- package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +82 -0
- package/skills/fsc-product-act3-attributes-create/SKILL.md +249 -0
- package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +196 -0
- package/skills/fsc-product-act5-considerations-get/SKILL.md +44 -0
- package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +384 -0
- package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +144 -0
- package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +107 -0
- package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +189 -0
- package/skills/fsc-stage-management-definition-create/SKILL.md +108 -0
- package/skills/fsc-stage-management-permissions-assign/SKILL.md +143 -0
- package/skills/fsc-stage-management-transitions-configure/SKILL.md +139 -0
- package/skills/health-cloud-appt-booking-config-configure/SKILL.md +135 -0
- package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +134 -0
- package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +136 -0
- package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +134 -0
- package/skills/health-cloud-care-requests-create/SKILL.md +178 -0
- package/skills/health-cloud-initial-configure/SKILL.md +511 -0
- package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +1374 -0
- package/skills/health-cloud-provider-search-settings-configure/SKILL.md +924 -0
- package/skills/health-cloud-referral-management-coordinate/SKILL.md +513 -0
- package/skills/health-cloud-timeline-configure/SKILL.md +622 -0
- package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +135 -0
- package/skills/industries-account-score-settings-query/SKILL.md +78 -0
- package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +177 -0
- package/skills/industries-ad-product-availability-search/SKILL.md +399 -0
- package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +628 -0
- package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +73 -0
- package/skills/industries-atm-settings-starter-configure/SKILL.md +76 -0
- package/skills/industries-batch-document-ai-configure/SKILL.md +196 -0
- package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +71 -0
- package/skills/industries-branch-management-settings-configure/SKILL.md +89 -0
- package/skills/industries-bre-decision-table-access-configure/SKILL.md +367 -0
- package/skills/industries-brokerage-settings-configure/SKILL.md +41 -0
- package/skills/industries-calendar-sync-settings-configure/SKILL.md +89 -0
- package/skills/industries-care-request-settings-configure/SKILL.md +218 -0
- package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +54 -0
- package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +380 -0
- package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +216 -0
- package/skills/industries-catalog-process-intake-configure/SKILL.md +219 -0
- package/skills/industries-catalog-process-knowledge-configure/SKILL.md +153 -0
- package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +168 -0
- package/skills/industries-cds-general-settings-configure/SKILL.md +69 -0
- package/skills/industries-claim-financial-settings-configure/SKILL.md +169 -0
- package/skills/industries-clinical-data-model-settings-configure/SKILL.md +136 -0
- package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +105 -0
- package/skills/industries-collection-plan-settings-configure/SKILL.md +132 -0
- package/skills/industries-comms-service-console-settings-configure/SKILL.md +159 -0
- package/skills/industries-compliance-configure/SKILL.md +102 -0
- package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +76 -0
- package/skills/industries-contact-center-app-layout-configure/SKILL.md +88 -0
- package/skills/industries-contact-center-components-configure/SKILL.md +96 -0
- package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +95 -0
- package/skills/industries-contact-center-user-access-assign/SKILL.md +96 -0
- package/skills/industries-course-waitlist-config-configure/SKILL.md +162 -0
- package/skills/industries-crisis-center-settings-configure/SKILL.md +84 -0
- package/skills/industries-custom-object-settings-configure/SKILL.md +94 -0
- package/skills/industries-data-cloud-integration-configure/SKILL.md +88 -0
- package/skills/industries-data-space-feature-mappings-configure/SKILL.md +245 -0
- package/skills/industries-decision-matrix-builder-configure/SKILL.md +78 -0
- package/skills/industries-decision-table-hbase-configure/SKILL.md +87 -0
- package/skills/industries-decision-table-version-configure/SKILL.md +74 -0
- package/skills/industries-decision-tables-builder-configure/SKILL.md +253 -0
- package/skills/industries-decision-tables-configure/SKILL.md +439 -0
- package/skills/industries-energy-utilities-configure/SKILL.md +251 -0
- package/skills/industries-eu-cloud-multisite-configure/SKILL.md +1008 -0
- package/skills/industries-eu-new-connections-configure/SKILL.md +30 -0
- package/skills/industries-explainability-msg-template-configure/SKILL.md +135 -0
- package/skills/industries-expression-set-message-token-configure/SKILL.md +135 -0
- package/skills/industries-field-service-settings-configure/SKILL.md +82 -0
- package/skills/industries-form-framework-settings-configure/SKILL.md +30 -0
- package/skills/industries-fsc-ai-settings-configure/SKILL.md +57 -0
- package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +172 -0
- package/skills/industries-fsc-b2b-settings-configure/SKILL.md +61 -0
- package/skills/industries-fsc-insurance-settings-configure/SKILL.md +58 -0
- package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +103 -0
- package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +117 -0
- package/skills/industries-fsc-wealth-settings-configure/SKILL.md +99 -0
- package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +120 -0
- package/skills/industries-fundraising-rfm-configure/SKILL.md +128 -0
- package/skills/industries-fundraising-settings-configure/SKILL.md +145 -0
- package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +299 -0
- package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +87 -0
- package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +58 -0
- package/skills/industries-hc-score-category-settings-configure/SKILL.md +167 -0
- package/skills/industries-health-engagement-settings-configure/SKILL.md +218 -0
- package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +131 -0
- package/skills/industries-home-health-bundling-policy-create/SKILL.md +50 -0
- package/skills/industries-home-health-entity-labels-configure/SKILL.md +29 -0
- package/skills/industries-home-health-fsl-package-deploy/SKILL.md +71 -0
- package/skills/industries-home-health-fsl-settings-validate/SKILL.md +27 -0
- package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +80 -0
- package/skills/industries-home-health-guided-setup-configure/SKILL.md +836 -0
- package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +55 -0
- package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +61 -0
- package/skills/industries-home-health-licenses-assign/SKILL.md +27 -0
- package/skills/industries-home-health-operating-hours-create/SKILL.md +40 -0
- package/skills/industries-home-health-scheduling-policy-create/SKILL.md +41 -0
- package/skills/industries-home-health-service-objective-create/SKILL.md +22 -0
- package/skills/industries-home-health-skills-create/SKILL.md +31 -0
- package/skills/industries-home-health-users-create/SKILL.md +29 -0
- package/skills/industries-icm-act3-toggles-configure/SKILL.md +198 -0
- package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +361 -0
- package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +550 -0
- package/skills/industries-integrated-care-management-configure/SKILL.md +168 -0
- package/skills/industries-object-enablement-configure/SKILL.md +86 -0
- package/skills/industries-tpm-system-processing-service-configure/SKILL.md +64 -0
- package/skills/insurance-brokerage-agency-billing-configure/SKILL.md +1 -3
- package/skills/integration-apex-settings-configure/SKILL.md +61 -0
- package/skills/marketing-e360-email-archiving-configure/SKILL.md +73 -0
- package/skills/marketing-message-test/SKILL.md +1 -3
- package/skills/nonprofit-fundraising-configure/SKILL.md +240 -0
- package/skills/nonprofit-fundraising-configure/references/gotchas.md +26 -0
- package/skills/nonprofit-fundraising-configure/references/mcp-invocation.md +678 -0
- package/skills/nonprofit-fundraising-configure/references/permission-targeting.md +35 -0
- package/skills/nonprofit-volunteer-management-model-get/SKILL.md +166 -0
- package/skills/nonprofit-volunteer-management-model-get/references/entities.md +315 -0
- package/skills/nonprofit-volunteer-management-model-get/references/relationships.md +175 -0
- package/skills/nonprofit-volunteer-management-model-get/references/themes.md +143 -0
- package/skills/nonprofit-volunteer-management-records-create/SKILL.md +121 -0
- package/skills/nonprofit-volunteer-management-records-create/references/field-guide.md +284 -0
- package/skills/nonprofit-volunteer-management-records-create/references/mcp-invocation.md +248 -0
- package/skills/nonprofit-volunteer-management-records-create/references/review-format.md +140 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/expand-series.py +632 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/render-review-table.py +419 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/tests/test_expand_series.py +690 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/tests/test_render_review_table.py +421 -0
- package/skills/nonprofit-volunteer-management-structure-generate/SKILL.md +119 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/configuration-decisions.md +159 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/discovery-interview.md +137 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/edge-cases.md +48 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/mcp-invocation.md +75 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/plan-output.md +141 -0
- package/skills/platform-custom-field-generate/SKILL.md +1 -0
- package/skills/platform-custom-field-generate/references/advanced-picklists.md +5 -5
- package/skills/platform-custom-metadata-type-generate/SKILL.md +3 -0
- package/skills/platform-custom-object-generate/SKILL.md +4 -0
- package/skills/platform-custom-permissions-configure/SKILL.md +687 -0
- package/skills/platform-custom-setting-generate/SKILL.md +3 -0
- package/skills/platform-datamask-run/SKILL.md +1 -5
- package/skills/platform-label-workbench-import-create/SKILL.md +67 -0
- package/skills/platform-permission-set-generate/SKILL.md +3 -0
- package/skills/platform-privacy-agent-settings-configure/SKILL.md +752 -0
- package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +1 -3
- package/skills/platform-sandbox-configure/SKILL.md +1 -3
- package/skills/platform-value-set-generate/SKILL.md +3 -0
- package/skills/sales-call-scoring-configure/SKILL.md +1 -5
- package/skills/service-agentforce-channel-configure/SKILL.md +1 -3
- package/skills/service-agentforce-human-escalation-configure/SKILL.md +1 -3
- package/skills/service-catalog-template-coordinate/SKILL.md +1 -3
- package/skills/service-concierge-portal-generate/SKILL.md +1 -3
- package/skills/service-email-to-case-configure/SKILL.md +1 -5
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -5
- package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-uel-user-create/SKILL.md +1 -9
- package/skills/service-itsm-incident-mgmt-configure/SKILL.md +1 -5
- package/skills/service-itsm-incident-priority-configure/SKILL.md +1 -3
- package/skills/service-itsm-slack-itservice-configure/SKILL.md +1 -3
- package/skills/service-itsm-swarming-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-debug/SKILL.md +1 -3
- package/skills/service-itsm-teams-employee-agent-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-itdesk-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-itservice-configure/SKILL.md +1 -3
- package/skills/service-native-voice-recording-transcription-configure/SKILL.md +1 -3
- package/skills/service-omni-agent-users-create/SKILL.md +1 -3
- package/skills/service-omni-agent-work-sharing-configure/SKILL.md +1 -3
- package/skills/service-omni-attribute-routing-configure/SKILL.md +1 -3
- package/skills/service-omni-base-settings-configure/SKILL.md +1 -3
- package/skills/service-omni-channel-inventory-analyze/SKILL.md +1 -3
- package/skills/service-omni-channel-limits-analyze/SKILL.md +1 -3
- package/skills/service-omni-channel-setup-coordinate/SKILL.md +1 -3
- package/skills/service-omni-command-center-analyze/SKILL.md +1 -3
- package/skills/service-omni-command-center-configure/SKILL.md +1 -3
- package/skills/service-omni-permission-set-assign/SKILL.md +1 -3
- package/skills/service-omni-presence-status-deploy/SKILL.md +1 -3
- package/skills/service-omni-presence-user-config-deploy/SKILL.md +1 -3
- package/skills/service-omni-queue-deploy/SKILL.md +1 -3
- package/skills/service-omni-queue-members-assign/SKILL.md +1 -3
- package/skills/service-omni-queue-routing-config-deploy/SKILL.md +1 -3
- package/skills/service-omni-routing-flow-deploy/SKILL.md +1 -3
- package/skills/service-omni-service-channel-configure/SKILL.md +1 -3
- package/skills/service-omni-sidebar-configure/SKILL.md +1 -3
- package/skills/service-omni-skills-based-routing-configure/SKILL.md +1 -3
- package/skills/service-omni-supervisor-config-deploy/SKILL.md +1 -3
- package/skills/service-omni-supervisor-permset-assign/SKILL.md +1 -3
- package/skills/service-omni-supervisor-surface-deploy/SKILL.md +1 -3
- package/skills/service-omni-supervisor-users-create/SKILL.md +1 -3
- package/skills/service-omni-work-skill-routing-configure/SKILL.md +1 -3
- 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: "
|
|
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.
|
|
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
|
|
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 `
|
|
53
|
-
-
|
|
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`,
|
|
138
|
-
action that targets a different configuration type is
|
|
139
|
-
skip it and list it in the response so the user can
|
|
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,
|
|
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": {
|
package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
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.
|
|
27
|
-
`OutboundMessages`
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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` —
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
95
|
+
For canonical entries use the pinned sobject + SOQL as-is; skip
|
|
98
96
|
"derive". Do not invent `OutboundMessage`, `RemoteSiteSetting`, or
|
|
99
|
-
`MasterLabel` variants
|
|
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
|
|
106
|
-
|
|
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**
|
|
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
|
-
`
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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` →
|
|
236
|
+
- `IsActive: true` → PATCH per Steps A–E (or Step G for `Flows`).
|
|
224
237
|
- `IsActive: false` → **do not PATCH**. Record `SKIPPED_INACTIVE`
|
|
225
|
-
|
|
226
|
-
|
|
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"
|
|
232
|
-
integration is a much
|
|
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: `<
|
|
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` =
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
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
|
|
298
|
-
|
|
299
|
-
|
|
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**:
|
|
304
|
-
by `
|
|
305
|
-
|
|
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`);
|
|
310
|
-
|
|
311
|
-
|
|
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
|
-
|
|
316
|
-
|
|
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**:
|
|
326
|
-
`automation-sandbox-post-copy-config-generate` (default
|
|
327
|
-
`./post-copy-config.json`
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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.
|
|
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
|
|
356
|
-
|
|
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
|
|
361
|
-
|
|
362
|
-
|
|
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
|
|
370
|
-
`ConfigurationName`
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
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`
|
|
379
|
-
|
|
380
|
-
- `ScheduledApex` → Step F (F-1
|
|
381
|
-
|
|
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:
|
|
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
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
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
|
|
428
|
-
| `references/scheduled_apex_path.md` | Step F — anonymous Apex route for `ScheduledApex`
|
|
429
|
-
| `references/
|
|
430
|
-
| `references/
|
|
431
|
-
| `references/
|
|
432
|
-
| `
|
|
433
|
-
| `scripts/
|
|
434
|
-
| `scripts/
|
|
435
|
-
| `scripts/
|
|
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 —
|
|
439
|
-
| `assets/scheduled_apex_template.apex` | Step F-2 — anonymous Apex template
|
|
440
|
-
| `examples/sample_config_input.json` | Step 1 —
|
|
441
|
-
| `examples/sample_scheduled_apex_config.json` | Step 1 —
|
|
442
|
-
| `examples/sample_execution_summary.md` | Step 7 —
|
|
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 |
|