@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
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dx-lifecycle-center
|
|
3
|
+
description: "Lifecycle Center for DX Inspector and Builder Central. Use this skill first for four jobs: (A) list the orgs connected to DX Inspector; (B) connect a new org (sandbox or scratch, production, OrgFarm) as a deploy target; (C) connect or check the Lifecycle Center org, also written LifecycleCenter org, lifecycle-center, ALMDevOpsCenterHub, DevOps Center hub, or Hub org; (D) deploy, validate, or quick-deploy components that already exist in the user's org to a connected org, and poll a simple-deploy requestId. TRIGGER on: show, list, or pick connected orgs or environments; connect, add, log in to, or repair an org; connect the Lifecycle Center org; deploy, validate, or push components to another org, URL, org id, alias, or environment name. Short asks like \"connect a new org\", \"which orgs can I deploy to\", or \"deploy to my sandbox\" match. These deploys move components from the connected source org to another org, not local project files."
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
7
|
+
minApiVersion: "67.0"
|
|
8
|
+
cliTools:
|
|
9
|
+
- tool: ["jq"]
|
|
10
|
+
semver: ">=1.6"
|
|
11
|
+
- tool: ["sf"]
|
|
12
|
+
semver: ">=2.67.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Lifecycle Center: Connect Orgs and Deploy Metadata
|
|
16
|
+
|
|
17
|
+
This skill manages which orgs a user can deploy to, and deploys to them. Everything runs from the **source org**: the org the user built in, where DX Inspector runs. All connections and environments are stored there.
|
|
18
|
+
|
|
19
|
+
## Operations
|
|
20
|
+
|
|
21
|
+
| Op | Name | What it does | Details |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| **A** | List orgs | Shows the orgs connected to DX Inspector (the deploy targets), or the current org's details. Also resolves a target the user names. | `references/list-orgs.md` |
|
|
24
|
+
| **B** | Connect an org | Connects a new sandbox or scratch, production, or OrgFarm org as a deploy target, or repairs a half-finished connection. The user signs in through a link. | `references/connect-org.md` |
|
|
25
|
+
| **C** | Lifecycle Center org | Connects, repairs, or checks the Lifecycle Center org (credential `ALMDevOpsCenterHub`). | `references/hub-org.md` |
|
|
26
|
+
| **D** | Deploy | Deploys, validates, or quick-deploys components from the source org to a connected target, then polls to the end. | `references/deploy.md` |
|
|
27
|
+
|
|
28
|
+
Connect (B) and deploy or quick deploy (D) change an org, so they wait for the user's confirmation first. Listing, status checks, validate runs, and polling do not change a target org.
|
|
29
|
+
|
|
30
|
+
## Key terms
|
|
31
|
+
|
|
32
|
+
| Term | Meaning |
|
|
33
|
+
|---|---|
|
|
34
|
+
| Source org | The org the user built in. Use the alias they name, else the default org from `sf org display --json`. Components must already exist in it. |
|
|
35
|
+
| DX Inspector environment | A `DevopsEnvironment` record in the source org with a Named Credential. The deploy targets are exactly these records. |
|
|
36
|
+
| Deploy target | An environment in state `selectable`. An `expired` or `unauthenticated` environment is not a target. |
|
|
37
|
+
| Lifecycle Center org | The Lifecycle Center hub. A separate connection that is never a deploy target. |
|
|
38
|
+
|
|
39
|
+
## Routing (deterministic)
|
|
40
|
+
|
|
41
|
+
Scripts and references are paths inside this skill's folder (the folder that holds this file). This skill owns every request below. Pick the operation by these rules **in order; the first match wins**. Do not hand these requests to another skill, and do not answer them from general knowledge.
|
|
42
|
+
|
|
43
|
+
| # | The request | Operation |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| 1 | Names the Lifecycle Center org, in any request, however it is spelled: "Lifecycle Center", "lifecyclecenter", "lifecycle-center", "lifecycle_center" (matching rules in `references/hub-org.md`) | **C** |
|
|
46
|
+
| 2 | Deploy, validate, quick deploy, or push components to an org, URL, org id, alias, or environment name; or gives a `requestId` or validation id | **D** |
|
|
47
|
+
| 3 | Show, list, or pick connected orgs or environments; "which orgs can I deploy to"; the current org's details | **A** |
|
|
48
|
+
| 4 | Connect, add, log in to, reconnect, or repair an org or its credential | **B** |
|
|
49
|
+
| 5 | Anything else about connected orgs or DX Inspector environments | **A** |
|
|
50
|
+
|
|
51
|
+
The Lifecycle Center org rule (1) has two exclusions: "Dev Hub" is never the Lifecycle Center org, and plural phrases such as "DevOps Center orgs", "DX Inspector orgs", "environments", or "orgs connected to DX Inspector" are not the Lifecycle Center org; route them by rules 2 to 5. Details: `references/hub-org.md`.
|
|
52
|
+
|
|
53
|
+
**Reading the wording.** Before applying the rules, normalize the request: lowercase it, treat hyphens, underscores, and extra spaces as single spaces, and ignore punctuation, one-letter typos in words of five or more letters, and filler such as "please", "can you", "I want to". (Rule 1 also uses the two forms described in `references/hub-org.md`.) Then match on any word in the groups below; the exact phrase does not matter.
|
|
54
|
+
|
|
55
|
+
| Operation | Action words (any form: "deploy", "deploying", "deployment") | Object words |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| **D** | deploy, deployment, validate, validation, check only, dry run, quick deploy, quickdeploy, push, send, ship, move, copy, release, add or install (when the object is a component) | components, metadata, classes, flows, objects, or a named org as the destination ("to", "into", "onto") |
|
|
58
|
+
| **B** | connect, connection, add, link, hook up, hookup, authorize, authenticate, log in, login, sign in, set up, setup, register, onboard, reconnect, repair, fix, refresh | org, environment, env, sandbox, scratch, production, prod, orgfarm, org farm |
|
|
59
|
+
| **A** | show, list, see, view, display, which, what, pick, choose, available | orgs, environments, envs, targets, connections, "where can I deploy" |
|
|
60
|
+
|
|
61
|
+
A request with a **D** action word and a destination, or that names a component and a destination whatever the verb ("add AccountService to my QA sandbox"), is **D**, even when it also contains a **B** word. A **B** action word whose object is an org or environment makes the request **B**, even when words like "connected" or "linked" also appear ("reconnect my sandbox, it shows not connected"). A request with only **B** words is **B**. A request with only **A** words, or a question about what is connected, is **A**. A bare `requestId` or "status of my deploy" is **D**. If no group matches, use the vague-prompt table below.
|
|
62
|
+
|
|
63
|
+
A request that mixes jobs (for example "connect my sandbox and deploy AccountService to it") takes the lowest-numbered match, here **D**, which runs **B** itself when the target is not connected.
|
|
64
|
+
|
|
65
|
+
**Vague prompts.** If the message is only "deploy", "push my changes", "connect an org", or similar, do not guess and do not call any API. Ask exactly one question that fixes the first missing input:
|
|
66
|
+
|
|
67
|
+
| Intent | Ask, in this order |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Deploy | 1. Which components? (`references/deploy.md`, Step 1) 2. Which target org? |
|
|
70
|
+
| Connect | 1. "Is it a sandbox or scratch org, a production org, or an OrgFarm org?" 2. What short name (letters only) should the environment have? |
|
|
71
|
+
| Not clear which | "Do you want to connect an org or deploy components?" |
|
|
72
|
+
|
|
73
|
+
A bare "deploy" with no DX Inspector context is a question, not a deploy.
|
|
74
|
+
|
|
75
|
+
## Rules that always apply
|
|
76
|
+
|
|
77
|
+
- Targets come from the DX Inspector environments in the source org, never from `sf org list` or local aliases.
|
|
78
|
+
- Never deploy to a target that is not `selectable`, never to the source org, and never to the Lifecycle Center org.
|
|
79
|
+
- The Lifecycle Center org never appears in a list and is not mentioned while listing. It is discussed only when the user asks about it.
|
|
80
|
+
- Confirm before every call that changes an org: connect (`connect-org.md`, Step 1) and deploy (`deploy.md`, Step 4). `validate` is the only mode that needs no confirmation.
|
|
81
|
+
- When a connect started from a deploy and finishes, tell the user the org is connected and that you are continuing the deploy, then ask for the deploy confirmation. Connecting never deploys by itself.
|
|
82
|
+
- A sandbox and a scratch org are the same type (`SANDBOX`). Treat their URLs alike.
|
|
83
|
+
- Make one attempt per API call. Never retry in a loop, resubmit after a timeout, or invent an id, credential name, or status.
|
|
84
|
+
- Never ask for, print, or pass an access token. Never show row ids or credential names.
|
|
85
|
+
- Never say a browser was opened. Give the login link and wait for the user to reply **done**.
|
|
86
|
+
- Do not guess a missing input. Ask one question for the first missing input.
|
|
87
|
+
- Ask the user to confirm an org type that the URL host does not decide. Never infer it from an environment name.
|
|
88
|
+
|
|
89
|
+
## What the user sees
|
|
90
|
+
|
|
91
|
+
| After | Reply with |
|
|
92
|
+
|---|---|
|
|
93
|
+
| **A** list | Only the table and the closing sentence (`list-orgs.md`, section 4). No raw JSON, no extra offers. |
|
|
94
|
+
| **A** not enabled | The one-sentence message in `list-orgs.md`, section 2. Nothing else. |
|
|
95
|
+
| **B** connect | The sign-in layout with a button-style link (`connect-org.md`, Step 2), then after **done** the connected layout: environment name, org host, type, and status (`connect-org.md`, Step 5). |
|
|
96
|
+
| **C** | The exact sentences in `hub-org.md`. When connecting, the same sign-in and connected layouts as B, in hub form. |
|
|
97
|
+
| **D** | A plain-language report: what was deployed, from where, to where, and the outcome (`deploy.md`, Step 7). No raw JSON. If the deploy is still running after about 2 minutes: the `requestId`, a note that it is in progress, and a request to send the id back to get the status (`deploy.md`, Step 6). |
|
|
98
|
+
|
|
99
|
+
## If something fails
|
|
100
|
+
|
|
101
|
+
| Failure | Where to look |
|
|
102
|
+
|---|---|
|
|
103
|
+
| The list or target lookup fails | `references/list-orgs.md`, section 2 |
|
|
104
|
+
| A connect step fails | `references/troubleshooting.md` |
|
|
105
|
+
| A deploy or validate fails | `references/error-handling.md` |
|
|
106
|
+
| The target login is stale | Reconnect that environment (`references/connect-org.md`, repair path), then ask before retrying |
|
|
107
|
+
|
|
108
|
+
## References
|
|
109
|
+
|
|
110
|
+
- `references/list-orgs.md`: Operation A. The resolver script, match statuses, the list table, and the not-enabled handling.
|
|
111
|
+
- `references/connect-org.md`: Operation B. Modes, Steps 0 to 5, and rules for connecting an org.
|
|
112
|
+
- `references/hub-org.md`: Operation C. The Lifecycle Center org: hub names, replies, and rules.
|
|
113
|
+
- `references/deploy.md`: Operation D. Steps 1 to 7 for deploy, validate, quick deploy, and polling.
|
|
114
|
+
- `references/request-body.md`: deploy, validate, and quick-deploy request bodies and test levels.
|
|
115
|
+
- `references/connect-api.md`: Environment API and `setupNamedCredential` request and response shapes, status checks.
|
|
116
|
+
- `references/troubleshooting.md`: connect error codes and recovery.
|
|
117
|
+
- `references/error-handling.md`: deploy error codes.
|
|
118
|
+
- `examples/workflows.md`: worked prompts for each operation.
|
|
119
|
+
- `scripts/resolve-environment.sh`: read-only list and identifier resolver.
|
|
120
|
+
- `scripts/poll-deploy-status.sh`: read-only status poller. Reads the Simple Deploy endpoint and `DevopsRequestInfo`, and reports component errors on failure.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Lifecycle Center Examples
|
|
2
|
+
|
|
3
|
+
Worked prompts, grouped by operation (`SKILL.md`, Operations). Listing, status checks, and polling are **read-only**. Connecting and deploying change an org, so they wait for the user's confirmation first (a validate run does not change the target).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## A. List orgs
|
|
8
|
+
|
|
9
|
+
**A1. "Show the list of connected orgs I can deploy to."**
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash scripts/resolve-environment.sh my-dev-org
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Reply with only the table and the closing sentence (`references/list-orgs.md`, section 4). The Lifecycle Center org is not in it and is not mentioned.
|
|
16
|
+
|
|
17
|
+
**A2. "What org am I in?"**
|
|
18
|
+
|
|
19
|
+
Answer from the `source` block: alias, username, URL, and org id. Nothing else.
|
|
20
|
+
|
|
21
|
+
**A3. The query fails because the session expired.**
|
|
22
|
+
|
|
23
|
+
The script reports "query failed, not an enablement problem". Say the error plainly and tell them to reconnect the source org (Reconnect prompt in Builder Central, or `sf org login web --alias <alias>` on a local CLI), then try again. Never say DX Inspector is disabled.
|
|
24
|
+
|
|
25
|
+
**A4. The query fails because DX Inspector is off.**
|
|
26
|
+
|
|
27
|
+
The script reports "DevOps Center not enabled or no access". Reply only: "DX Inspector isn't enabled for this org or user, so there are no environments to list or deploy to. An admin needs to enable it." Stop.
|
|
28
|
+
|
|
29
|
+
**A5. "Show my DevOps Center orgs."**
|
|
30
|
+
|
|
31
|
+
The phrase is plural, so it is not the Lifecycle Center org. List the environments (A1) and do not mention the hub.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## B. Connect an org
|
|
36
|
+
|
|
37
|
+
**B1. "Connect a new sandbox."**
|
|
38
|
+
|
|
39
|
+
1. Ask for the environment name (letters only). The type is `SANDBOX`; confirm it.
|
|
40
|
+
2. Check the org is not already connected (`references/connect-org.md`, Step 0).
|
|
41
|
+
3. After the user confirms, `POST /connect/devops/environment`.
|
|
42
|
+
4. Give the `redirectUrl` as a clickable link and wait for **done**. Never say a browser was opened.
|
|
43
|
+
5. `PATCH /connect/devops/environment/<id>`, then list again and confirm the new row shows its URL and org id.
|
|
44
|
+
|
|
45
|
+
**B2. "Connect https://mydomain--qa.sandbox.my.salesforce.com."**
|
|
46
|
+
|
|
47
|
+
The host contains `.sandbox.`, so the type is `SANDBOX` without asking. Ask only for the environment name.
|
|
48
|
+
|
|
49
|
+
**B3. "Connect my org."**
|
|
50
|
+
|
|
51
|
+
The type is not decided by anything the user said. Ask: "Is it a sandbox or scratch org, a production org, or an OrgFarm org?" Never default. A scratch org is handled exactly like a sandbox (`SANDBOX`).
|
|
52
|
+
|
|
53
|
+
**B4. "Connect the org I'm already in."**
|
|
54
|
+
|
|
55
|
+
The identifier is the source org. Say it cannot be connected as its own deploy target and ask which other org they mean.
|
|
56
|
+
|
|
57
|
+
**B5. The environment exists but was never finished.**
|
|
58
|
+
|
|
59
|
+
The row shows as not authenticated. Do not POST again. Get a fresh link with `GET /connect/devops/environment/<id>`, wait for **done**, then PATCH once.
|
|
60
|
+
|
|
61
|
+
**B6. What the user sees while connecting.**
|
|
62
|
+
|
|
63
|
+
Sign-in (Step 2):
|
|
64
|
+
|
|
65
|
+
> **Connect `QA`**
|
|
66
|
+
>
|
|
67
|
+
> **[Sign in to `QA` →](https://mydomain--qa.sandbox.my.salesforce.com/services/oauth2/authorize?...)**
|
|
68
|
+
>
|
|
69
|
+
> 1. Sign in with the user DX Inspector should act as, and approve access.
|
|
70
|
+
> 2. Come back here and reply **done**.
|
|
71
|
+
>
|
|
72
|
+
> Link not working? Copy it: `https://mydomain--qa.sandbox.my.salesforce.com/services/oauth2/authorize?...`
|
|
73
|
+
|
|
74
|
+
Connected (Step 5):
|
|
75
|
+
|
|
76
|
+
> **✅ `QA` is connected**
|
|
77
|
+
>
|
|
78
|
+
> | Org | Type | Status |
|
|
79
|
+
> |---|---|---|
|
|
80
|
+
> | `mydomain--qa.sandbox.my.salesforce.com` | Sandbox | Ready to deploy to |
|
|
81
|
+
|
|
82
|
+
The Lifecycle Center org uses the same two layouts with its own heading, button text, and a Hub type column.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## C. Lifecycle Center org
|
|
87
|
+
|
|
88
|
+
**C1. "Connect me to the hub org."**
|
|
89
|
+
|
|
90
|
+
1. "Hub org" is an ambiguous name, so ask: "Do you mean the Lifecycle Center org (the Lifecycle Center hub)?" ("Connect the Lifecycle Center org" is a certain name: skip the question.)
|
|
91
|
+
2. On yes, check the credential. If it is configured, reply only: "The Lifecycle Center org is already configured." Stop.
|
|
92
|
+
3. If it is not configured, confirm, create the credential, and give the login link labeled **Connect to Lifecycle Center org** (`references/connect-org.md`, hub mode).
|
|
93
|
+
|
|
94
|
+
**C5. "connect to lifecyclecenter org", "lifecycle-center", "connect lifecycle_center".**
|
|
95
|
+
|
|
96
|
+
These are spelling variants of the same name. Normalize (lowercase, drop spaces and punctuation), find `lifecyclecenter`, and handle it as C1 without asking which org is meant.
|
|
97
|
+
|
|
98
|
+
**C6. Wording variants of the other operations.**
|
|
99
|
+
|
|
100
|
+
After normalizing, these route the same way as the plain phrase: "Pls push AccountService into my QA-sandbox", "ship my flows to prod", "deployment to org-farm env", "dry run to my sandbox" → **D**. "Hook up a new scratch-org", "add sandbx", "sign in to prod", "set up an orgfarm env" → **B** (scratch and `sandbx` are `SANDBOX`, prod is `PRODUCTION`). "which envs can I use", "show linked orgs", "where can I deploy" → **A**.
|
|
101
|
+
|
|
102
|
+
**C2. "Is the Lifecycle Center org connected?"**
|
|
103
|
+
|
|
104
|
+
Check the credential. Configured: "The Lifecycle Center org is already configured." Not configured: "The Lifecycle Center org is not configured. Want me to connect it?"
|
|
105
|
+
|
|
106
|
+
**C3. "Deploy AccountService to the Lifecycle Center org."**
|
|
107
|
+
|
|
108
|
+
Make no API call. Ask: "Do you mean the Lifecycle Center org, or a different org?" For the Lifecycle Center org, explain that a deploy cannot go there because it is the Lifecycle Center hub, and offer to connect an org as a regular deploy target. For a different org, ask which and continue at `references/deploy.md`, Step 2.
|
|
109
|
+
|
|
110
|
+
**C4. "Why isn't the Lifecycle Center org in my list?"**
|
|
111
|
+
|
|
112
|
+
Say it is the Lifecycle Center hub, kept separate from deploy targets, and is never part of the deploy list.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## D. Deploy
|
|
117
|
+
|
|
118
|
+
**D1. "Deploy AccountService to https://mydomain--mysandbox.sandbox.my.salesforce.com."**
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
bash scripts/resolve-environment.sh my-dev-org https://mydomain--mysandbox.sandbox.my.salesforce.com
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- `matched` and `selectable`: confirm the row back with name, URL, and org id, build the request, show the Step 4 confirmation, then submit.
|
|
125
|
+
- `not-connected`: say so and offer to connect it, carrying the URL into the connect flow (D2).
|
|
126
|
+
|
|
127
|
+
The same call works with an alias (`my-sandbox`), an org id (`00D5g000001AbCd`), or an environment name (`MySandbox`).
|
|
128
|
+
|
|
129
|
+
**D2. Deploy to an org that is not connected yet.**
|
|
130
|
+
|
|
131
|
+
**User prompt:** "Deploy AccountService to my QA sandbox."
|
|
132
|
+
|
|
133
|
+
1. The lookup says `not-connected`. Offer to connect it. The user agrees.
|
|
134
|
+
2. Run the connect flow (B1). When it finishes, say: "`QA` is now connected. I'll continue deploying `AccountService` to it."
|
|
135
|
+
3. Go straight to the Step 4 confirmation. Nothing is deployed until the user says yes.
|
|
136
|
+
|
|
137
|
+
**D3. "Deploy."**
|
|
138
|
+
|
|
139
|
+
Make no API call. Ask one question: which components to deploy. Then ask for the target.
|
|
140
|
+
|
|
141
|
+
**D4. "Validate AccountService against production," then quick deploy.**
|
|
142
|
+
|
|
143
|
+
State what you will validate, then submit with `"isCheckDeploy": true` (`references/request-body.md`), then:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
bash scripts/poll-deploy-status.sh <requestId> my-dev-org 10 100
|
|
147
|
+
# Exit codes: 0 succeeded, 2 failed or not found, 3 timeout, 1 usage or call error (4 only with --once)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
On success, report the validation id from `metadata.deployId` and offer a quick deploy with it. For the quick deploy, send only `isQuickDeploy` and `checkDeployIdentifier`. If it is still running after 2 minutes, see D9; never resubmit.
|
|
151
|
+
|
|
152
|
+
**D5. "Check request `<requestId>`" or a `requestId` from earlier.**
|
|
153
|
+
|
|
154
|
+
Skip the component and target steps. Poll once:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
bash scripts/poll-deploy-status.sh --once <requestId> my-dev-org
|
|
158
|
+
# Exit 4 means still processing: report the status and step
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**D9. The deploy takes more than 2 minutes.**
|
|
162
|
+
|
|
163
|
+
The poll exits `3`. Reply: "Your deploy is still running. Request id: `<requestId>`. Send me this id and I'll check its status." Stop polling. When the user sends the id, run `bash scripts/poll-deploy-status.sh --once <requestId> my-dev-org` and report the status in plain language.
|
|
164
|
+
|
|
165
|
+
**D8. The user gives only an id starting `0Af`.**
|
|
166
|
+
|
|
167
|
+
It is a validation id, not a `requestId`: never poll it. Ask whether to quick deploy it and to which target, then show the quick-deploy confirmation (`references/deploy.md`, Step 4).
|
|
168
|
+
|
|
169
|
+
**D6. The user names two targets.**
|
|
170
|
+
|
|
171
|
+
Deploy to the first, report, then ask before starting the second. Each target gets its own confirmation.
|
|
172
|
+
|
|
173
|
+
**D7. The target answers `Bad_OAuth_Token` or `TARGET_ORG_SESSION_EXPIRED`.**
|
|
174
|
+
|
|
175
|
+
The stored login for that environment is stale. Say so, reconnect that environment (`references/connect-org.md`, repair path), and ask before trying the deploy again.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# DX Inspector Named Credential Connect API
|
|
2
|
+
|
|
3
|
+
All calls target the **development org** (where DX Inspector runs). This skill requires API v67.0 or later. The caller needs DevOps common API access (`USER_HAS_DEVOPS_COMMON_API_ACCESS`). Portal users are rejected.
|
|
4
|
+
|
|
5
|
+
Both calls are part of the DevOps Center Connect API (v67.0).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## `/connect/devops/environment` (deploy targets)
|
|
10
|
+
|
|
11
|
+
Creates the NC, the EC, **and the `DevopsEnvironment` row** that simple-deploy requires. `setupNamedCredential` never creates the row.
|
|
12
|
+
|
|
13
|
+
Part of the DevOps Center Connect API (v67.0).
|
|
14
|
+
|
|
15
|
+
| Method | Path | Body | Result |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| POST | `/connect/devops/environment` | `{envName, orgType, isDevEnv?, replaceEnvironmentId?}` | `{id, name, namedCredential, externalCredential, redirectUrl, orgType, isDevEnv}` |
|
|
18
|
+
| PATCH | `/connect/devops/environment/{id}` | none | `{id, organizationId, orgUrl, status, message}` after the login. `name` and `namedCredential` are not returned; keep them from the POST |
|
|
19
|
+
| GET | `/connect/devops/environment/{id}` | none | The environment, with a fresh `redirectUrl` pinned to the row's org URL: use it for the repair link |
|
|
20
|
+
| DELETE | `/connect/devops/environment/{id}` | none | Removes the NC/EC and the row |
|
|
21
|
+
|
|
22
|
+
- `envName` and `orgType` are required. `orgType` is `PRODUCTION`, `SANDBOX`, or `ORGFARM`; it maps to `ORG_TO_ORG`, `ORG_TO_SANDBOX_ORG`, `ORG_TO_ORGFARM_ORG`.
|
|
23
|
+
- The NC/EC name is generated as `<letters-of-envName>_<epochMillis>`.
|
|
24
|
+
- POST sets up the NC/EC, builds the OAuth `redirectUrl`, then inserts the row. The user logs in at `redirectUrl`; PATCH then reads `/services/oauth2/userinfo` through the NC, rewrites the callout URL to the real My Domain, and stores `organizationId` and `orgUrl` on the row.
|
|
25
|
+
- Errors are prefixed `TARGET_ORG_ENVIRONMENT_CREATION_FAILED`, `TARGET_ORG_AUTHENTICATION_STATUS_CHECK_FAILED` (401/403), `TARGET_ORG_AUTHENTICATION_TIMEOUT` (408/504), or `TARGET_ORG_UNKNOWN_ERROR`.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## `/connect/devops/setupNamedCredential` (hub)
|
|
30
|
+
|
|
31
|
+
The POST and PATCH take the same flat JSON body:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{ "namedCredentialName": "<name>", "namedCredentialType": "<DevopsAuthType>" }
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Use `ORG_TO_ORG`, `ORG_TO_SANDBOX_ORG`, or `ORG_TO_ORGFARM_ORG`. Any other value returns `400 namedCredentialType is not supported.`
|
|
38
|
+
|
|
39
|
+
### POST: create the credential and get the login URL
|
|
40
|
+
|
|
41
|
+
Server behavior (`setUpNamedCredentialsForDevops`, then `getOAuthCredentialAuthUrl`):
|
|
42
|
+
|
|
43
|
+
1. **External Credential.** If missing, it creates one with:
|
|
44
|
+
- developer name and label set to `<name>`,
|
|
45
|
+
- protocol **OAuth**,
|
|
46
|
+
- `ExternalAuthIdentityProvider` set to the platform standard IdP for the type:
|
|
47
|
+
|
|
48
|
+
| Type | IdP |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `ORG_TO_ORG` | `sfdc.ALMDevOpsOrgStandardIdP` |
|
|
51
|
+
| `ORG_TO_SANDBOX_ORG` | `sfdc.ALMDevOpsSandoxOrgStandardIdp` |
|
|
52
|
+
| `ORG_TO_ORGFARM_ORG` | `sfdc.ALMDevOpsOrgFarmOrgStandardIdp` |
|
|
53
|
+
|
|
54
|
+
- `AdditionalRefreshStatusCode` set to `403`,
|
|
55
|
+
- one **PerUserPrincipal** (sequence 1).
|
|
56
|
+
|
|
57
|
+
The IdP uses the authorization code flow with PKCE. The client id and secret come from the platform secrets store, so no per-org connected app is needed.
|
|
58
|
+
2. **Named Credential.** If missing, it creates a `SecuredEndpoint` NC linked to the EC, with:
|
|
59
|
+
- `generateAuthorizationHeader=true`, `allowMergeFieldsInHeader=true`, `allowMergeFieldsInBody=false`,
|
|
60
|
+
- a **placeholder** callout URL (the login host),
|
|
61
|
+
- headers `target_org_auth_token: Bearer {!$Credential.OAuthToken}` and `x-salesforce-region`.
|
|
62
|
+
3. **Principal access.** Grants the EC principal to the permission set `AccessDevOpsCenterNamedCredentials` ("Access DevOps Center Named Credentials").
|
|
63
|
+
4. **Response.** Returns `{"redirectUrl": "<OAuth start URL>"}`, HTML-escaped, so you must replace `&` with `&`.
|
|
64
|
+
|
|
65
|
+
The POST is **idempotent**: existing NCs and ECs are reused. Errors inside steps 1–3 are **logged and swallowed**, so a "successful" POST can still leave things half-created. Always verify with *Check credential status*. An empty `redirectUrl` means URL generation failed.
|
|
66
|
+
|
|
67
|
+
Error wrapping: `DOCE_AUTHENTICATION_FAILED:<msg>` or `DOCE_AUTH_UNKNOWN_ERROR:<msg>` (500), and `INVALID_INPUT` (400).
|
|
68
|
+
|
|
69
|
+
### PATCH: finalize after the OAuth login
|
|
70
|
+
|
|
71
|
+
Server behavior (`updateNamedCredentialsForDevops`):
|
|
72
|
+
|
|
73
|
+
1. Returns `404 Named credential does not exist: <name>` if the NC is missing.
|
|
74
|
+
2. Calls `callout:<name>/services/oauth2/userinfo` and takes the org URL from `urls.rest`. **This requires the OAuth token from the browser login.**
|
|
75
|
+
3. Pre-warms the remote API version cache (`GET /services/data`).
|
|
76
|
+
4. Rewrites the NC callout URL to the org URL. It keeps the label, type, callout options, and EC link.
|
|
77
|
+
|
|
78
|
+
The response is `{"namedCredentialName": "<name>", "calloutUrl": "<org url>", "redirectUrl": null}`.
|
|
79
|
+
|
|
80
|
+
On failure it returns `DOCE_CONNECTION_UPDATE_FAILED:<msg>` and **also clears the user's saved DX Inspector selections**. Unexpected failures return `DOCE_AUTH_UNKNOWN_ERROR:<msg>`.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Check credential status
|
|
85
|
+
|
|
86
|
+
Use the standard Named Credentials Connect API in the dev org:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# External credential and its per-user principal status
|
|
90
|
+
sf api request rest "/services/data/v<ver>/named-credentials/external-credentials/<name>" \
|
|
91
|
+
--target-org <dev-org-alias>
|
|
92
|
+
# → principals[].principalType == "PerUserPrincipal", principals[].authenticationStatus == "Configured" | "NotConfigured"
|
|
93
|
+
|
|
94
|
+
# Named credential callout URL
|
|
95
|
+
sf api request rest "/services/data/v<ver>/named-credentials/named-credential-setup/<name>" \
|
|
96
|
+
--target-org <dev-org-alias>
|
|
97
|
+
# → calloutUrl (placeholder login host before PATCH, org My Domain after); calloutStatus "Enabled"
|
|
98
|
+
|
|
99
|
+
# List named credentials (diagnostics only; deploy targets come from DevopsEnvironment)
|
|
100
|
+
sf data query --use-tooling-api \
|
|
101
|
+
--query "SELECT DeveloperName FROM NamedCredential ORDER BY CreatedDate DESC" \
|
|
102
|
+
--target-org <dev-org-alias> --json
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Tooling `NamedCredential.Endpoint` is `null` for these `SecuredEndpoint` credentials, so always read `calloutUrl` from the `named-credential-setup` GET. DevOps-created target credentials match `<letters>_<millis>`. Never build the deploy-target list from this query.
|
|
106
|
+
|
|
107
|
+
A missing credential returns `NOT_FOUND` ("We couldn't access the credential(s)... might not exist") on either GET. That means the credential does not exist, or the user lacks access to it. `authenticationStatus` is reported **for the running user**: the token is per user, so another user's login does not count.
|
|
108
|
+
|
|
109
|
+
| EC principal | NC callout URL | State |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| — (404) | — (404) | Not created. Run POST. |
|
|
112
|
+
| `NotConfigured` | login host | Created, but login not done. Run browser login, then PATCH. |
|
|
113
|
+
| `Configured` | login host | Login done, PATCH missing. Run PATCH. |
|
|
114
|
+
| `Configured` | org My Domain | Ready. |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## How the flows consume the credential
|
|
119
|
+
|
|
120
|
+
| Flow | Dev-org endpoint | Credential use |
|
|
121
|
+
|---|---|---|
|
|
122
|
+
| Deploy | `POST /connect/devops/simple-deploy/deploy` with `{"namedCredential": "<name>", ...}` | Calls `userinfo` through the NC (refreshing the token if needed), then forwards the target token and instance URL to the deploy service. `TARGET_ORG_NAMED_CREDENTIAL_NOT_AUTHENTICATED` means the principal is not configured. |
|
|
123
|
+
| Hub type | `GET /connect/devops/doceConnectionType` | Reads the hub `DevHubSettings` through `ALMDevOpsCenterHub` and returns `CORE` or `MANAGED_PACKAGE`. |
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Connecting an Org (Named Credential Setup)
|
|
2
|
+
|
|
3
|
+
Creates and configures the Named Credential (NC) and External Credential (EC) that DX Inspector uses to call another org, through `/connect/devops/setupNamedCredential`. Use it when the user wants to connect an org, or a deploy needs a target that is not connected yet.
|
|
4
|
+
|
|
5
|
+
The **development org** is the source org, where DX Inspector runs. It holds every credential, so every API call here targets that org (`<dev-org-alias>`). The org being connected to is touched only through the browser login. API shapes and status checks: `connect-api.md`. Failures: `troubleshooting.md`.
|
|
6
|
+
|
|
7
|
+
## Modes
|
|
8
|
+
|
|
9
|
+
| Mode | Used by | NC/EC name | Type field |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| **Deploy target** | Operation B, and Operation D when its target is not connected | Generated by the server: `<EnvName>_<epochMillis>` (letters only in `EnvName`, which must contain at least one letter). Uses the **Environment API**, which also creates the `DevopsEnvironment` row | `orgType` `PRODUCTION`, `SANDBOX`, or `ORGFARM` |
|
|
12
|
+
| **Lifecycle Center org** (the hub) | `hub-org.md` | Fixed: `ALMDevOpsCenterHub` (exact casing). Uses `setupNamedCredential`; no `DevopsEnvironment` row is needed | `ORG_TO_ORG` |
|
|
13
|
+
|
|
14
|
+
**Why two APIs:** `setupNamedCredential` creates only the NC and EC. It never creates a `DevopsEnvironment` row, and deploy needs that row (`targetEnvironmentId`). For a deploy target always use `POST /connect/devops/environment`, which creates the NC, the EC, and the row in one call.
|
|
15
|
+
|
|
16
|
+
Target org to type (deploy mode sends `orgType`; hub mode sends `namedCredentialType`, normally `ORG_TO_ORG` for the hub org):
|
|
17
|
+
|
|
18
|
+
| Target org | `orgType` (deploy) | `namedCredentialType` (hub) |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Production or Developer Edition (logs in at login.salesforce.com) | `PRODUCTION` | `ORG_TO_ORG` |
|
|
21
|
+
| Sandbox or scratch org (logs in at test.salesforce.com; both are the same type) | `SANDBOX` | `ORG_TO_SANDBOX_ORG` |
|
|
22
|
+
| OrgFarm org | `ORGFARM` | `ORG_TO_ORGFARM_ORG` |
|
|
23
|
+
|
|
24
|
+
The type picks the login page. The API takes no login URL, and the PATCH later discovers the org's real My Domain from the login. If the user gives an org URL instead of a type, map it by host, checking rows top to bottom (first match wins, so an OrgFarm sandbox is a sandbox):
|
|
25
|
+
|
|
26
|
+
| Host pattern | Type |
|
|
27
|
+
|---|---|
|
|
28
|
+
| Contains `.sandbox.` (e.g. `*.sandbox.my.salesforce.com`), or `test.salesforce.com`, or contains `.scratch.` | Sandbox (scratch orgs included) |
|
|
29
|
+
| Starts with `orgfarm-` | OrgFarm |
|
|
30
|
+
| Other `*.my.salesforce.com`, `login.salesforce.com` | Production |
|
|
31
|
+
|
|
32
|
+
Read the type from any common spelling, ignoring case, spaces, and hyphens: sandbox, sbx, sand box, test org, scratch, scratch org, scratchorg → `SANDBOX`; production, prod, prd, live, developer edition, dev edition → `PRODUCTION`; orgfarm, org farm, org-farm → `ORGFARM`. A word that fits none of these is not a type: ask.
|
|
33
|
+
|
|
34
|
+
If the type is still ambiguous (for example only an environment name like "MySandbox", or a vague "connect my org"), **ask the user**; never default. Never infer the type from the environment name: a wrong type sends them to the wrong login host.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Step 0 — Resolve inputs and check for an existing credential
|
|
39
|
+
|
|
40
|
+
1. Resolve `<dev-org-alias>`: the alias the user named, else the default org from `sf org display --json`. Read `result.apiVersion` as `<ver>`; it must be at least `67.0`.
|
|
41
|
+
2. Determine the mode. Hub mode only when reached from `hub-org.md`; every other connect is deploy mode. In deploy mode also determine the target org type and a short environment name.
|
|
42
|
+
3. Check whether a usable credential already exists (`connect-api.md`, *Check credential status*).
|
|
43
|
+
- **Hub mode:** check `ALMDevOpsCenterHub`.
|
|
44
|
+
- **Deploy mode:** run the environment lookup (`list-orgs.md`) using the org's **URL, org id, or local alias only**, never the environment name the user wants to give it. If `sourceMatched` is `true`, say it cannot be connected as its own deploy target and ask for another org. If a row matches, check its `NamedCredential`. A row that matches only by name belongs to another org: that name is taken, so ask for a different one. If the user gave no URL, org id, or alias, there is nothing to match: create.
|
|
45
|
+
|
|
46
|
+
| Finding | Action |
|
|
47
|
+
|---|---|
|
|
48
|
+
| Exists, principal `Configured`, callout URL is the real org (not a login host) | Stop. Already connected; return to the calling flow with the NC name. **Hub, asked for directly by the user:** reply only "The Lifecycle Center org is already configured." with no reconnect offer, org details, or login link. |
|
|
49
|
+
| Exists but `NotConfigured`, or callout URL is still a login host | Repair. **Hub:** re-run Steps 1–4 with the same name (POST is idempotent). **Deploy:** reuse the existing row's `Id`; do **not** POST a second environment. Confirm first: "I'll reconnect `<name>`: this refreshes its credential. Proceed?" Then get a fresh login URL with `GET /connect/devops/environment/<id>` (its `redirectUrl`) and go to Step 2. |
|
|
50
|
+
| Matched row is `expired` | Not repairable. Create a new environment (Steps 1–4) with a new name. |
|
|
51
|
+
| `ambiguous` | Show the matches and ask which one. |
|
|
52
|
+
| Does not exist | Create. Run Steps 1–4. |
|
|
53
|
+
|
|
54
|
+
## Step 1 — Create the credential and get the login URL (POST)
|
|
55
|
+
|
|
56
|
+
**This creates metadata in the dev org. Confirm with the user first:**
|
|
57
|
+
|
|
58
|
+
> "I'll connect `<name>` (`<type>`) to DX Inspector in `<dev-org-alias>`: this creates the environment record and its credential. Proceed?"
|
|
59
|
+
|
|
60
|
+
**Hub mode** has no environment record. Say instead: "I'll connect the Lifecycle Center org to `<dev-org-alias>`: this creates its credential. Proceed?" For a repair, add that a failed finish step clears their saved DX Inspector selections.
|
|
61
|
+
|
|
62
|
+
**Deploy mode** — Environment API (creates NC, EC, and the `DevopsEnvironment` row):
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
sf api request rest "/services/data/v<ver>/connect/devops/environment" \
|
|
66
|
+
--method POST \
|
|
67
|
+
--body '{"envName":"<name>","orgType":"<PRODUCTION|SANDBOX|ORGFARM>","isDevEnv":false}' \
|
|
68
|
+
--target-org <dev-org-alias>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Response: `{id, name, namedCredential, redirectUrl, orgType, ...}`. Keep `id` (the `DevopsEnvironment` Id) and `namedCredential`. Send only `envName`, `orgType`, and `isDevEnv`. A `BAD_REQUEST` naming `Invalid org type` means the value above was wrong.
|
|
72
|
+
|
|
73
|
+
**Hub mode** — `setupNamedCredential`:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
sf api request rest "/services/data/v<ver>/connect/devops/setupNamedCredential" \
|
|
77
|
+
--method POST \
|
|
78
|
+
--body '{"namedCredentialName":"ALMDevOpsCenterHub","namedCredentialType":"ORG_TO_ORG"}' \
|
|
79
|
+
--target-org <dev-org-alias>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Response: `{"redirectUrl": "..."}`. In both modes replace every `&` in `redirectUrl` with `&`.
|
|
83
|
+
|
|
84
|
+
The server **swallows setup errors** and can still return an empty `redirectUrl`. If it is empty, stop and diagnose with `troubleshooting.md`. Do not continue to the PATCH. In deploy mode an environment row may already exist; tell the user and offer to delete it with `DELETE /connect/devops/environment/<id>` (removes the NC/EC too) after confirmation.
|
|
85
|
+
|
|
86
|
+
## Step 2 — User completes the OAuth login via a link
|
|
87
|
+
|
|
88
|
+
This step **requires a human** (authorization code with PKCE, stored per user). The CLI cannot open the user's browser from a chat, so **do not claim a browser was opened** and do not run `sf org open`. Show the sign-in as a button-style link, using exactly this layout (deploy mode shown; `<name>` is the environment name):
|
|
89
|
+
|
|
90
|
+
> **Connect `<name>`**
|
|
91
|
+
>
|
|
92
|
+
> **[Sign in to `<name>` →](<redirectUrl>)**
|
|
93
|
+
>
|
|
94
|
+
> 1. Sign in with the user DX Inspector should act as, and approve access.
|
|
95
|
+
> 2. Come back here and reply **done**.
|
|
96
|
+
>
|
|
97
|
+
> Link not working? Copy it: `<redirectUrl>`
|
|
98
|
+
|
|
99
|
+
Hub mode uses the same layout with the heading **Connect the Lifecycle Center org** and the button text **Connect to Lifecycle Center org →**.
|
|
100
|
+
|
|
101
|
+
Rules for the link:
|
|
102
|
+
- Use the full `redirectUrl` after the `&` fix, unmodified, as the Markdown link, and again in the "Link not working?" line. Show the sign-in once; do not repeat it in other words.
|
|
103
|
+
- Only the newest link works. Each new Step 1 run (hub) or `GET /connect/devops/environment/<id>` (deploy) replaces the previous one, so never run one while the user is still signing in, and never show an older link again. If the user reports it expired or failed, get a fresh one the same way.
|
|
104
|
+
- The user should open it in a browser that is signed in to the dev org as the same user the CLI uses (the final confirmation happens on the dev org). Otherwise the browser lands on that org's login page: tell them to sign in there, then use the link again.
|
|
105
|
+
- Right after showing the layout, wait for the user to reply **done**. Do not run other steps in between.
|
|
106
|
+
|
|
107
|
+
**Hub mode:** the user must log in as someone holding the **DevOps Center User** permission set in the hub org.
|
|
108
|
+
|
|
109
|
+
## Step 3 — Confirm the OAuth token landed
|
|
110
|
+
|
|
111
|
+
When the user says they are done, check the EC principal (`connect-api.md`, *Check credential status*).
|
|
112
|
+
|
|
113
|
+
| Status | Action |
|
|
114
|
+
|---|---|
|
|
115
|
+
| `Configured` | Go to Step 4. |
|
|
116
|
+
| `NotConfigured` | The login did not complete. Ask whether they saw an error and offer to re-run Step 1 for a fresh URL. Do not PATCH. |
|
|
117
|
+
|
|
118
|
+
## Step 4 — Finalize: set the real org URL (PATCH)
|
|
119
|
+
|
|
120
|
+
The NC is created pointing at a placeholder login host. The PATCH calls `/services/oauth2/userinfo` through the NC, rewrites the callout URL to the real My Domain, and (deploy mode) stores the target's org id and URL on the `DevopsEnvironment` row. Until it succeeds, callouts go to the wrong host.
|
|
121
|
+
|
|
122
|
+
**Deploy mode:**
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
sf api request rest "/services/data/v<ver>/connect/devops/environment/<id>" \
|
|
126
|
+
--method PATCH --target-org <dev-org-alias>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Success returns `id`, `organizationId`, `orgUrl`, `status`, and `message`. Keep `namedCredential` from the POST. Verify `orgUrl` is a My Domain URL and **not** `login.salesforce.com` or `test.salesforce.com`.
|
|
130
|
+
|
|
131
|
+
**Hub mode:**
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
sf api request rest "/services/data/v<ver>/connect/devops/setupNamedCredential" \
|
|
135
|
+
--method PATCH \
|
|
136
|
+
--body '{"namedCredentialName":"ALMDevOpsCenterHub","namedCredentialType":"ORG_TO_ORG"}' \
|
|
137
|
+
--target-org <dev-org-alias>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Success returns `{"namedCredentialName": "...", "calloutUrl": "https://<org>.my.salesforce.com", "redirectUrl": null}`. Verify `calloutUrl` the same way.
|
|
141
|
+
|
|
142
|
+
- On failure (`DOCE_CONNECTION_UPDATE_FAILED`, a 404, a userinfo failure, or `TARGET_ORG_*` codes) see `troubleshooting.md`.
|
|
143
|
+
- **Never retry the PATCH in a loop.** **Hub mode only:** a failed PATCH also **clears the user's saved DX Inspector selections**. Tell the user.
|
|
144
|
+
|
|
145
|
+
## Step 5 — Verify and hand off
|
|
146
|
+
|
|
147
|
+
1. Re-run the status check. Expect principal `Configured` and a callout URL equal to the PATCH `calloutUrl`.
|
|
148
|
+
2. **Hub mode only:** optionally record the hub type the way DX Inspector does. A `CORE` or `MANAGED_PACKAGE` response proves the NC works end to end.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
sf api request rest "/services/data/v<ver>/connect/devops/doceConnectionType" --target-org <dev-org-alias>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
3. Show the result with exactly this layout, no raw JSON, and never the credential name.
|
|
155
|
+
|
|
156
|
+
Deploy mode:
|
|
157
|
+
|
|
158
|
+
> **✅ `<name>` is connected**
|
|
159
|
+
>
|
|
160
|
+
> | Org | Type | Status |
|
|
161
|
+
> |---|---|---|
|
|
162
|
+
> | `<host of orgUrl>` | Sandbox, Production, or OrgFarm | Ready to deploy to |
|
|
163
|
+
|
|
164
|
+
Hub mode (use the `calloutUrl` host; leave out the Hub type column when the type call was skipped or unknown):
|
|
165
|
+
|
|
166
|
+
> **✅ The Lifecycle Center org is connected**
|
|
167
|
+
>
|
|
168
|
+
> | Org | Hub type | Status |
|
|
169
|
+
> |---|---|---|
|
|
170
|
+
> | `<host of calloutUrl>` | Core or Managed package | Connected |
|
|
171
|
+
|
|
172
|
+
Say "Sandbox" for a scratch org too. If the status check in item 1 did not return `Configured`, do not show this layout: say the sign-in is not complete and offer a fresh link.
|
|
173
|
+
4. **Deploy mode:** re-run the environment lookup (`list-orgs.md`) and confirm the row with the `id` from Step 1 is listed, `selectable`, with its `NamedCredential`. Carry that `id` and `namedCredential` forward. If it is missing, do not deploy and do not invent an id; report that the credential is connected but the row was not found.
|
|
174
|
+
5. **If this connect started from a deploy request** (`deploy.md`, Step 2): tell the user in one sentence that `<name>` is connected and that you are continuing the deploy of the components they gave. Then go to `deploy.md`, Step 3 and Step 4. The deploy confirmation is theirs to give; do not submit anything before it. If the connect did not start from a deploy, end here and do not offer anything beyond the result.
|
|
175
|
+
|
|
176
|
+
## Rules
|
|
177
|
+
|
|
178
|
+
- Never fabricate an NC name, callout URL, or `Configured` status. Report only what the org returned.
|
|
179
|
+
- Never print access tokens, and never pass `headerTargetAccessToken` in place of a stored connection.
|
|
180
|
+
- One environment per target org. Do not reuse a deploy NC for a different org; create a new environment.
|
|
181
|
+
- Deploy-target connections always use the Environment API so the `DevopsEnvironment` row exists. Never use `setupNamedCredential` alone for a deploy target.
|
|
182
|
+
- Never tell the user a browser was opened. Give the link.
|
|
183
|
+
- Do not rename `ALMDevOpsCenterHub`. DX Inspector looks it up by that exact name.
|
|
184
|
+
- Only the org-to-org types (`ORG_TO_ORG`, `ORG_TO_SANDBOX_ORG`, `ORG_TO_ORGFARM_ORG`) are used here.
|