@salesforce/afv-skills 1.55.0 → 1.57.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-generate/SKILL.md +8 -0
- package/skills/agentforce-generate/references/actions-reference.md +2 -2
- package/skills/agentforce-generate/references/voice-modality-reference.md +51 -15
- package/skills/agentforce-generate/references/voice-telephony-cli.md +193 -0
- package/skills/agentforce-observe/SKILL.md +13 -9
- package/skills/agentforce-observe/references/ahm-alerts.md +193 -14
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +24 -15
- package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +11 -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 +32 -1
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +75 -71
- package/skills/automation-sandbox-post-copy-configure/assets/scheduled_apex_template.apex +13 -0
- package/skills/automation-sandbox-post-copy-configure/examples/sample_scheduled_apex_config.json +13 -0
- package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +155 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/build-scheduled-apex.mjs +62 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/soql-escape-job-name.mjs +28 -0
- package/skills/commerce-b2b-open-code-components-integrate/SKILL.md +1 -1
- package/skills/commerce-b2b-open-code-components-replace/SKILL.md +16 -16
- package/skills/consumer-goods-accruals-datakit-deploy/SKILL.md +383 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/setup.js +324 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/00-check-prerequisites.js +63 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/01-download-static-resource.js +100 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/02-replace-org-id.js +46 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/03-deploy-metadata.js +46 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/04-deploy-engine.js +198 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/05-deploy-tpm-accruals.js +231 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/06-create-dataspace.js +82 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/07-deploy-accruals-reports.js +517 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/08-deploy-ui.js +416 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/09-completion.js +44 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/utils.js +514 -0
- package/skills/consumer-goods-sync-management-configure/SKILL.md +137 -0
- package/skills/consumer-goods-sync-management-configure/examples/scenarios.md +294 -0
- package/skills/consumer-goods-sync-management-configure/references/act1-setup-sync.md +333 -0
- package/skills/consumer-goods-sync-management-configure/references/act2-assign-users.md +324 -0
- package/skills/consumer-goods-sync-management-configure/references/act3-plan-verify.md +113 -0
- package/skills/consumer-goods-sync-management-configure/references/readiness-and-enablement.md +164 -0
- package/skills/consumer-goods-sync-management-configure/references/sync-management-app-install-backbone.md +159 -0
- package/skills/consumer-goods-sync-management-configure/references/transports-and-namespace.md +220 -0
- package/skills/consumer-goods-sync-management-configure/references/verify-and-smoke.md +175 -0
- package/skills/dx-devops-project-manage/SKILL.md +1 -1
- package/skills/dx-org-analyze/SKILL.md +0 -1
- package/skills/dx-org-analyze/scripts/collect_org_data.py +2 -2
- package/skills/dx-org-analyze/scripts/compute_diff.py +2 -4
- package/skills/dx-org-analyze/scripts/introspect_org.py +4 -40
- package/skills/dx-org-manage/SKILL.md +6 -50
- package/skills/dx-org-manage/examples/README.md +10 -16
- package/skills/dx-org-manage/references/scratch-org-create.md +1 -1
- package/skills/dx-org-manage/references/scratch-org-operations.md +1 -1
- package/skills/dx-org-shape-manage/SKILL.md +4 -3
- package/skills/education-cloud-domain-configure/references/gotchas-extended.md +1 -0
- package/skills/experience-accessibility-validate/SKILL.md +8 -5
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-1-1-non-text-content.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-i-lists.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-ii-tables.md +20 -85
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iii-form-labels.md +4 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iv-regions.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-v-groups.md +2 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-5-identify-input.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-4-3-contrast.md +4 -14
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-1-1-keyboard.md +9 -5
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-4-link-purpose.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-6-headings-labels.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-3-label-in-name.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-7-dragging-movement.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-1-on-focus.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-2-on-input.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-1-error-identification.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-2-labels-instructions.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-3-error-suggestion.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-i-name.md +4 -5
- package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-ii-role.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-iii-value.md +0 -4
- package/skills/experience-cms-content-generate/SKILL.md +1 -1
- package/skills/experience-cms-content-render/SKILL.md +3 -3
- package/skills/experience-cms-content-render/assets/angular/MediaRenderer.component.ts +35 -7
- package/skills/experience-cms-content-render/assets/angular/cms-item.service.ts +13 -4
- package/skills/experience-cms-content-render/assets/react/MediaRenderer.tsx +30 -8
- package/skills/experience-cms-content-render/assets/react/useCmsItem.ts +14 -4
- package/skills/experience-cms-content-render/assets/shared/cmsCore.types.ts +11 -1
- package/skills/experience-cms-content-render/assets/shared/externalRefs.ts +1 -1
- package/skills/experience-cms-content-render/assets/shared/mediaLabels.ts +62 -0
- package/skills/experience-cms-content-render/references/init-scaffold.md +13 -6
- package/skills/experience-content-media-stock-image-search/SKILL.md +0 -1
- package/skills/experience-lwc-accessibility-jest-run/SKILL.md +104 -25
- package/skills/experience-lwc-accessibility-jest-run/assets/jest.config.js +4 -0
- package/skills/experience-lwc-accessibility-jest-run/assets/sa11y-jest-setup.js +5 -0
- package/skills/experience-lwc-design-generate/SKILL.md +1 -1
- package/skills/experience-lwc-legacy-migrate/SKILL.md +212 -0
- package/skills/experience-lwc-legacy-migrate/assets/lo20-host-page-template.html +192 -0
- package/skills/experience-lwc-legacy-migrate/references/aura-to-lwc-completeness-checklist.md +188 -0
- package/skills/experience-lwc-legacy-migrate/references/lightning-out-2-system-reference.md +495 -0
- package/skills/experience-lwc-legacy-migrate/references/lightning-out-beta-to-2-migration.md +824 -0
- package/skills/experience-lwc-legacy-migrate/scripts/convert-lo-names.py +94 -0
- package/skills/experience-lwc-legacy-migrate/scripts/validate-lo20-page.py +133 -0
- package/skills/experience-ui-bundle-app-coordinate/SKILL.md +5 -5
- package/skills/experience-ui-bundle-features-generate/SKILL.md +65 -36
- package/skills/experience-ui-bundle-features-generate/references/angular/features.md +74 -0
- package/skills/experience-ui-bundle-features-generate/references/react/features.md +59 -0
- package/skills/experience-ui-bundle-features-generate/scripts/detect-framework.sh +73 -0
- package/skills/experience-ui-bundle-frontend-generate/SKILL.md +2 -2
- package/skills/experience-ui-bundle-metadata-generate/SKILL.md +26 -14
- package/skills/experience-ui-bundle-metadata-generate/references/angular-metadata-generate.md +37 -0
- package/skills/experience-ui-bundle-metadata-generate/references/react-metadata-generate.md +32 -0
- package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.sh +73 -0
- package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.sh +30 -8
- package/skills/experience-ui-bundle-project-generate/SKILL.md +1 -1
- package/skills/field-service-data-capture-migrate/SKILL.md +391 -0
- package/skills/field-service-data-capture-migrate/assets/sample-legacy-flow.flow-meta.xml +163 -0
- package/skills/field-service-data-capture-migrate/references/architecture-notes.md +40 -0
- package/skills/field-service-data-capture-migrate/references/component-mapping.md +278 -0
- package/skills/field-service-data-capture-migrate/references/converter-builder-contract.md +183 -0
- package/skills/field-service-data-capture-migrate/references/dc-platform-rules.md +130 -0
- package/skills/field-service-data-capture-migrate/references/fsm-dc-capability-catalog.md +215 -0
- package/skills/field-service-data-capture-migrate/references/known-deploy-errors.md +36 -0
- package/skills/field-service-data-capture-migrate/references/migration-checklist.md +121 -0
- package/skills/field-service-data-capture-migrate/references/transformer-rules.md +132 -0
- package/skills/field-service-data-capture-migrate/scripts/analyze_flow.py +277 -0
- package/skills/field-service-data-capture-migrate/scripts/convert_to_dc_spec.py +1311 -0
- package/skills/field-service-data-capture-migrate/scripts/cud_analysis.py +402 -0
- package/skills/field-service-data-capture-migrate/scripts/deploy_flow.sh +230 -0
- package/skills/field-service-data-capture-migrate/scripts/discover_subflow_tree.py +230 -0
- package/skills/field-service-data-capture-migrate/scripts/flow_input.py +186 -0
- package/skills/field-service-data-capture-migrate/scripts/flow_xml_utils.py +39 -0
- package/skills/field-service-data-capture-migrate/scripts/fsm_dc_catalog.py +413 -0
- package/skills/field-service-data-capture-migrate/scripts/generate_summary.py +199 -0
- package/skills/field-service-data-capture-migrate/scripts/json_to_flow_xml.py +146 -0
- package/skills/field-service-data-capture-migrate/scripts/manual_review_flags.py +42 -0
- package/skills/field-service-data-capture-migrate/scripts/retrieve_flow_rest.sh +155 -0
- package/skills/field-service-data-capture-migrate/scripts/subflow_names.py +49 -0
- package/skills/field-service-data-capture-migrate/scripts/transform_flow.py +1661 -0
- package/skills/field-service-data-capture-migrate/scripts/validate_flow.sh +147 -0
- package/skills/field-service-data-capture-migrate/scripts/vendor/build_flow.py +1258 -0
- package/skills/integration-connectivity-connected-app-configure/SKILL.md +5 -5
- package/skills/integration-connectivity-generate/SKILL.md +10 -10
- package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +2 -2
- package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +1 -1
- package/skills/life-sciences-fieldsalesrep-coordinate/references/orchestration-flow.md +1 -1
- package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +14 -1
- package/skills/mobile-apps-create/SKILL.md +1 -1
- package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/SKILL.md +7 -7
- package/skills/platform-apex-test-generate/SKILL.md +1 -1
- package/skills/platform-apex-test-run/SKILL.md +1 -1
- package/skills/platform-custom-field-generate/SKILL.md +1 -1
- package/skills/platform-custom-lightning-type-generate/SKILL.md +1 -1
- package/skills/platform-custom-metadata-type-generate/SKILL.md +1 -1
- package/skills/platform-custom-object-generate/SKILL.md +1 -1
- package/skills/platform-custom-report-type-generate/SKILL.md +1 -1
- package/skills/platform-custom-setting-generate/SKILL.md +1 -1
- package/skills/platform-data-and-tooling-api-context-get/SKILL.md +1 -1
- package/skills/platform-data-manage/SKILL.md +10 -10
- package/skills/platform-flexipage-generate/SKILL.md +1 -1
- package/skills/platform-lightning-app-coordinate/SKILL.md +1 -1
- package/skills/platform-metadata-api-context-get/SKILL.md +1 -1
- package/skills/platform-metadata-retrieve/SKILL.md +1 -1
- package/skills/platform-permission-set-generate/SKILL.md +1 -1
- package/skills/platform-report-generate/SKILL.md +1 -1
- package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +4 -4
- package/skills/platform-sandbox-configure/SKILL.md +108 -133
- package/skills/platform-sandbox-configure/references/api-response-shapes.md +39 -0
- package/skills/platform-sandbox-configure/references/definition-file-approach.md +73 -0
- package/skills/platform-sharing-owd-configure/SKILL.md +1 -1
- package/skills/platform-sharing-rules-generate/SKILL.md +1 -1
- package/skills/platform-soql-query/SKILL.md +1 -1
- package/skills/platform-value-set-generate/SKILL.md +1 -1
- package/skills/platform-widget-generate/SKILL.md +26 -18
- package/skills/platform-widget-generate/examples/formulas.json +191 -0
- package/skills/platform-widget-generate/references/widget-formulas.md +123 -0
- package/skills/platform-widget-generate/references/widget-meta-directives.md +4 -4
- package/skills/sales-call-scoring-configure/SKILL.md +318 -0
- package/skills/sales-call-scoring-configure/assets/best-practice-competencies.json +67 -0
- package/skills/sales-call-scoring-configure/assets/ootb-competencies.json +58 -0
- package/skills/sales-call-scoring-configure/references/admin-communication.md +79 -0
- package/skills/sales-call-scoring-configure/references/competency-crud.md +130 -0
- package/skills/sales-call-scoring-configure/scripts/create-competency.sh +166 -0
- package/skills/sales-call-scoring-configure/scripts/create-custom-competency.sh +166 -0
- package/skills/sales-call-scoring-configure/scripts/edit-competency.sh +185 -0
- package/skills/sales-call-scoring-configure/scripts/edit-custom-competency.sh +190 -0
- package/skills/sales-call-scoring-configure/scripts/enable-call-scoring.sh +436 -0
- package/skills/sales-call-scoring-configure/scripts/get-competency.sh +72 -0
- package/skills/sales-call-scoring-configure/scripts/get-custom-competency.sh +78 -0
- package/skills/sales-call-scoring-configure/scripts/install-best-practice-competencies.sh +223 -0
- package/skills/sales-call-scoring-configure/scripts/install-ootb-competencies.sh +237 -0
- package/skills/sales-call-scoring-configure/scripts/list-competencies.sh +99 -0
- package/skills/sales-call-scoring-configure/scripts/shared/auth.sh +116 -0
- package/skills/sales-call-scoring-configure/scripts/shared/cap.sh +86 -0
- package/skills/sales-call-scoring-configure/scripts/shared/soap.sh +267 -0
- package/skills/sales-call-scoring-configure/scripts/shared/soql.sh +25 -0
- package/skills/sales-call-scoring-configure/scripts/toggle-competency.sh +112 -0
- package/skills/sales-call-scoring-configure/scripts/toggle-custom-competency.sh +125 -0
- package/skills/sales-call-scoring-configure/scripts/verify-ootb-competencies.sh +116 -0
- package/skills/service-agentforce-human-escalation-configure/SKILL.md +4 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/_bootstrap.py +26 -6
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/test_escalation_contracts.py +5 -4
- package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +1 -0
- package/skills/service-de-channel-activate/SKILL.md +6 -5
- package/skills/service-de-channel-create/SKILL.md +3 -3
- package/skills/service-de-channel-routing-configure/SKILL.md +3 -3
- package/skills/service-de-channel-settings-configure/SKILL.md +195 -0
- package/skills/service-de-channel-settings-configure/references/channel-settings-facets.md +152 -0
- package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/gotchas.md +3 -3
- package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/language-keywords.md +4 -4
- package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/worked-examples.md +14 -14
- package/skills/service-de-headless-channel-configure/SKILL.md +6 -6
- package/skills/service-de-headless-channel-configure/references/worked-examples.md +1 -1
- package/skills/service-de-waba-integrate/SKILL.md +2 -1
- package/skills/service-digital-engagement-deployment-configure/SKILL.md +2 -0
- package/skills/service-digital-engagement-deployment-configure/scripts/check-api-version.sh +29 -0
- package/skills/service-email-to-case-configure/SKILL.md +1 -1
- package/skills/service-helpagent-coordinate/SKILL.md +3 -2
- package/skills/service-helpagent-coordinate/references/channel-voice.md +15 -4
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +49 -31
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +71 -6
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/scripts/verify-child-verdict.mjs +26 -4
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +35 -10
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/references/mcp-invocation.md +25 -5
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -1
- package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +5 -5
- package/skills/service-itsm-agentic-setup-cmdb-configure/references/mcp-invocation.md +1 -1
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +2 -2
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/examples/output-templates.md +1 -1
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +25 -15
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -5
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +4 -2
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +1 -1
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +29 -16
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -5
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +4 -2
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +1 -1
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +29 -16
- package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +138 -68
- package/skills/service-itsm-agentic-setup-incident-management/examples/output-templates.md +31 -15
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +156 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +148 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +162 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +149 -0
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +103 -89
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +2 -2
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +21 -39
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +3 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +18 -1
- package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +63 -37
- package/skills/service-omni-attribute-routing-configure/SKILL.md +53 -0
- package/skills/service-omni-attribute-routing-configure/references/api-notes.md +7 -0
- package/skills/service-omni-attribute-routing-configure/scripts/configure-and-report.sh +224 -0
- package/skills/service-omni-attribute-routing-configure/scripts/tests/test_attribute_routing_contracts.py +137 -0
- package/skills/service-omni-channel-inventory-analyze/SKILL.md +96 -0
- package/skills/service-omni-channel-inventory-analyze/references/api-notes.md +52 -0
- package/skills/service-omni-channel-inventory-analyze/scripts/analyze.sh +185 -0
- package/skills/service-omni-channel-inventory-analyze/scripts/tests/_bootstrap.py +84 -0
- package/skills/service-omni-channel-inventory-analyze/scripts/tests/test_inventory_analyze_contracts.py +141 -0
- package/skills/service-omni-channel-limits-analyze/SKILL.md +70 -0
- package/skills/service-omni-channel-limits-analyze/references/api-notes.md +22 -0
- package/skills/service-omni-channel-limits-analyze/scripts/analyze.sh +159 -0
- package/skills/service-omni-channel-limits-analyze/scripts/tests/_bootstrap.py +87 -0
- package/skills/service-omni-channel-limits-analyze/scripts/tests/test_limits_analyze_contracts.py +99 -0
- package/skills/service-omni-channel-setup-coordinate/SKILL.md +12 -20
- package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +55 -5
- package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +38 -0
- package/skills/service-omni-command-center-analyze/SKILL.md +2 -2
- package/skills/service-omni-command-center-analyze/scripts/analyze.sh +3 -3
- package/skills/dx-org-manage/examples/snapshots/error_output.json +0 -9
- package/skills/dx-org-manage/examples/snapshots/success_output.json +0 -15
- package/skills/dx-org-manage/references/cli_flags.md +0 -67
- package/skills/dx-org-manage/references/creating-snapshot.md +0 -103
- package/skills/dx-org-manage/references/snapshot_usage.md +0 -74
- package/skills/experience-accessibility-validate/scripts/contrast-ratio.py +0 -153
- package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +0 -205
- package/skills/experience-ui-bundle-features-generate/scripts/verify-react-bundle.sh +0 -14
- /package/skills/experience-ui-bundle-features-generate/references/{conflict-resolution-schema.json → common/conflict-resolution-schema.json} +0 -0
- /package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/references/api-response-schema.md +0 -0
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
name: service-itsm-agentic-setup-incident-sla-configure
|
|
3
3
|
description: "End-to-end Incident SLA setup for Service Cloud ITSM — creating a MilestoneType, an Incident-scoped SLA Policy (SlaProcess), attaching a Milestone with criteria, and wiring an Entitlement so Incidents derive an EntityMilestone with a computed TargetDate. Use when the user asks to configure SLA milestones on Incidents, create an SLA policy for Incident records, set up entitlement processes for ITSM, wire milestones so they appear on the Incident page, or enable SLA tracking for incident management. DO NOT TRIGGER when: the user asks about Case entitlements or Case SLA (not Incident), querying existing SLA policies without setup intent, general Entitlement sObject CRUD unrelated to Incident, or Milestone queries for reporting purposes only."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "3.
|
|
5
|
+
version: "3.8"
|
|
6
6
|
domains: ["Service"]
|
|
7
7
|
minApiVersion: "67.0"
|
|
8
|
+
accessCheck:
|
|
9
|
+
- type: "userPerm"
|
|
10
|
+
value: "CustomizeApplication"
|
|
11
|
+
- type: "orgPerm"
|
|
12
|
+
value: "IncidentMgmt.orgHasITSMOrgPermission"
|
|
8
13
|
relatedSkills:
|
|
9
14
|
- "service-itsm-incident-mgmt-configure"
|
|
10
15
|
- "service-itsm-incident-priority-configure"
|
|
@@ -22,48 +27,55 @@ allowed-tools: |
|
|
|
22
27
|
|
|
23
28
|
# Configuring Incident SLA (End-to-End)
|
|
24
29
|
|
|
25
|
-
Configures a complete **Incident SLA pipeline** for Service Cloud ITSM — the chain
|
|
26
|
-
EntityMilestone (with a computed TargetDate) on every Incident with an Entitlement
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
**
|
|
31
|
-
criteria) → **Milestone** (time trigger + filter criteria) → **Entitlement** (wired to an Account so
|
|
30
|
+
Configures a complete **Incident SLA pipeline** for Service Cloud ITSM — the chain deriving an
|
|
31
|
+
EntityMilestone (with a computed TargetDate) on every Incident with an Entitlement, all via the
|
|
32
|
+
Salesforce-hosted **`headless-360`** MCP server (org from the OAuth JWT). Requires the org-level
|
|
33
|
+
**SLA Management for IT Service** setup item (the Phase 0.5 gate).
|
|
34
|
+
Four parts: **MilestoneType** (what you measure) → **SLA Policy** (SlaProcess, Incident-scoped,
|
|
35
|
+
entry/exit criteria) → **Milestone** (time trigger + criteria) → **Entitlement** (Account-wired, so
|
|
32
36
|
Incidents engage the SLA).
|
|
33
37
|
|
|
34
38
|
## Scope
|
|
35
39
|
|
|
36
|
-
- **In scope**:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(Phase 0.5); halts if not fully enabled or consent declined.
|
|
40
|
-
- **In scope — predefined vs custom** (Phase 0.6): offering the OOB *Standard Support for Incidents*
|
|
41
|
-
policy (Incident only) vs a custom one.
|
|
40
|
+
- **In scope**: the four artifacts above + verifying SLA engagement on Incident records; gating
|
|
41
|
+
**SLA Management for IT Service** (Phase 0.5); offering the OOB *Standard Support for Incidents*
|
|
42
|
+
policy vs a custom one (Phase 0.6, Incident only) — all via `headless-360` MCP.
|
|
42
43
|
- **Out of scope**: Case SLA/entitlements; Assignment Rules; Escalation Rules; Notification
|
|
43
44
|
Rules; general Entitlement CRUD not related to Incident SLA; SLA reporting.
|
|
44
45
|
|
|
45
46
|
---
|
|
46
47
|
|
|
48
|
+
## Output contract — applies to EVERY message
|
|
49
|
+
|
|
50
|
+
**Never print a raw Salesforce record Id** (15/18-char: `55…`, `550…`, `0ny…`, `00…`) — full **or
|
|
51
|
+
masked** (`557VW…R3XVYA0` still leaks) — in **any** user-facing text: interim narration *and* the
|
|
52
|
+
final report. Holds for artifacts you **created** *and* ones you **detected/reused** — name each (the
|
|
53
|
+
name you supplied on create, or matched on reuse), keep its Id internal (chaining only). Verifying or
|
|
54
|
+
matching via SOQL? Report the **verified attributes/name**, never the Id you queried by. One
|
|
55
|
+
exception: on a **halt** you may relay the raw error body verbatim even if it embeds an Id —
|
|
56
|
+
don't hand-edit it.
|
|
57
|
+
|
|
58
|
+
- **Wrong:** `SLA policy created (552VW…)` · `Incident created (0ny…)` · `First Response → 557VW…R3XVYA0` (reuse)
|
|
59
|
+
- **Right:** `Created SLA policy "Standard Support for Incidents"` · `reusing the existing First Response
|
|
60
|
+
milestone type` · the test Incident is "the test Incident" until Phase 3, then its `IncidentNumber`;
|
|
61
|
+
milestones by `MilestoneType` name.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
47
65
|
## Routes at a glance
|
|
48
66
|
|
|
49
67
|
Reads → `mcp__headless-360__dispatch_readonly`, writes → `mcp__headless-360__dispatch`. Both take raw
|
|
50
|
-
HTTP
|
|
51
|
-
|
|
52
|
-
MilestoneType / SLA Policy / Milestone, Entitlement, BusinessHours, test Incident, the Phase 0.5
|
|
53
|
-
feature calls, and the `create-milestone-action` op — with request/response shapes lives in
|
|
54
|
-
`references/mcp-invocation.md`.
|
|
68
|
+
HTTP `{"url","method","body"?,"query_params"?}` — **not** `{operation_id, arguments}`; read `body`
|
|
69
|
+
from `{status_code, body}`. Full route table with request/response shapes: `references/mcp-invocation.md`.
|
|
55
70
|
|
|
56
71
|
---
|
|
57
72
|
|
|
58
73
|
## Clarifying Questions
|
|
59
74
|
|
|
60
|
-
Ask only what you cannot infer from context (pre-populate; note "(from
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
- **Milestone strategy?** See Phase 1.4 (skipped per its skip conditions).
|
|
65
|
-
- **Target Account?** For the Entitlement.
|
|
66
|
-
- **Milestone criteria?** Default `Status != Closed`, plus pattern-specific filters.
|
|
75
|
+
Ask only what you cannot infer from context (pre-populate; note "(from conversation)"). **Resolve the
|
|
76
|
+
Phase 0.5 gate first.** Then: **which org?** (`headless-360` binds to the current OAuth session —
|
|
77
|
+
confirm before mutating); **milestone strategy?** (Phase 1.4); **target Account?** (for the
|
|
78
|
+
Entitlement); **milestone criteria?** (default `Status != Closed` + pattern-specific filters).
|
|
67
79
|
|
|
68
80
|
Default suggestion: SLA Policy `Incident SLA Policy`, default BusinessHours, the Account the user
|
|
69
81
|
picks, Entitlement `today → today + 1 year`, milestone strategy resolved per Phase 1.4.
|
|
@@ -81,8 +93,7 @@ Each Phase 1 read carries a **skip-if-already-known** clause: skip only when the
|
|
|
81
93
|
produced **this session** by a successful `dispatch_readonly` on the current org and unwritten since —
|
|
82
94
|
a user statement is never cache-eligible. Cacheable: master Incident Mgmt pref (step 1, only if
|
|
83
95
|
`ENABLED`), SLA feature + Versioning (Phase 0.5), Incident describe (3), `BusinessHoursId` (4), Account
|
|
84
|
-
id (5), SLA Connect ops
|
|
85
|
-
worse than a re-read.
|
|
96
|
+
id (5), SLA Connect ops (2). **When in doubt, re-check.**
|
|
86
97
|
|
|
87
98
|
### Phase 0.5 — SLA Management for IT Service prerequisite gate
|
|
88
99
|
|
|
@@ -114,19 +125,16 @@ Once the gate passes, offer the OOB policy **before** any custom-flow questions.
|
|
|
114
125
|
- **Already present** → **no re-seed** (no idempotency), no custom upsell; report it is seeded.
|
|
115
126
|
**If warn/escalate actions were requested → resolve the named existing milestones → Phase 2.5 →
|
|
116
127
|
Phase 3 verify → STOP** (attach actions even though the policy was already seeded).
|
|
117
|
-
2. **Fork** — one `AskUserQuestion`, **Predefined
|
|
118
|
-
|
|
119
|
-
**
|
|
120
|
-
**active** policy + Entitlement, no un-seed path (manual delete only).
|
|
128
|
+
2. **Fork** — one `AskUserQuestion`, **Predefined first / recommended**: Salesforce's predefined
|
|
129
|
+
Incident policy (*Standard Support for Incidents* — priority-tiered) **or** a custom one. One-way:
|
|
130
|
+
predefined seeds an **active** policy + Entitlement, no un-seed path (manual delete only).
|
|
121
131
|
- **Predefined →** resolve BusinessHours + Account (Phase 1 steps 4–5) → **Phase 2-OOB** → **Phase
|
|
122
132
|
2.5** (if actions requested) → Phase 3 verify → **STOP**.
|
|
123
133
|
- **Custom →** existing Phase 1 → 1.4 → 1.5 → 2 → 3, unchanged.
|
|
124
134
|
|
|
125
|
-
**MUST read `references/mcp-invocation.md` (Predefined Incident Policy) before seeding.**
|
|
126
|
-
|
|
127
135
|
### Phase 1 — Preflight & discovery
|
|
128
136
|
|
|
129
|
-
**On any `401` / `403` / `404` from a step below, halt and surface the raw error** — the org/client is misconfigured. `401` → MCP auth (ECA
|
|
137
|
+
**On any `401` / `403` / `404` from a step below, halt and surface the raw error** — the org/client is misconfigured. `401` → MCP auth (ECA/token). `403` → user perm OR ITSM Incident Management license/pref missing. `404` → `headless-360` not activated OR Entitlement Management not enabled for Incident.
|
|
130
138
|
|
|
131
139
|
1. **Master Incident Management pref — direct read** *(skip conditions in Phase 0)*.
|
|
132
140
|
`dispatch_readonly` `GET .../connect/setup/discovery/features`, filter `features[]` to the **exact**
|
|
@@ -183,61 +191,68 @@ selection expands to N creates in Phase 2 step 10 (one POST per milestone, `orde
|
|
|
183
191
|
Priority-tiered / Custom to "N milestones"). **Skip the `AskUserQuestion`** (but still narrate the
|
|
184
192
|
plan before dispatch) when up-front authorization was granted (note `(authorized in prompt)`), the
|
|
185
193
|
branch is a no-op, or it was already confirmed in conversation (note `(confirmed in conversation)`);
|
|
186
|
-
otherwise require an explicit "yes" before Phase 2. Everything
|
|
187
|
-
everything after mutates the org.
|
|
194
|
+
otherwise require an explicit "yes" before Phase 2. Everything after this step mutates the org.
|
|
188
195
|
|
|
189
196
|
### Phase 2 — Create SLA Artifacts (exact order — each depends on the previous)
|
|
190
197
|
|
|
198
|
+
Capture each returned `id` for chaining only.
|
|
199
|
+
|
|
191
200
|
8. **Create MilestoneType(s)** — `POST /connect/sla-management/milestone-types`. One POST per
|
|
192
201
|
distinct MilestoneType required by the strategy. Reuse a single MilestoneType across milestones
|
|
193
202
|
that share a name (Priority-tiered "First Response" reuses one MilestoneType across all four
|
|
194
203
|
milestones); create separate MilestoneTypes for distinct concerns (Response + Resolution =
|
|
195
|
-
two MilestoneTypes; Escalation ladder = three). Capture each `id`.
|
|
204
|
+
two MilestoneTypes; Escalation ladder = three). Capture each `id`. A feature enable pre-seeds a
|
|
205
|
+
default MilestoneType catalog; a detected/reused one is narrated by name only (Output contract:
|
|
206
|
+
name, never `→ <Id>`).
|
|
196
207
|
9. **Create SLA Policy** — `POST /connect/sla-management/sla-policies` with `processType='Incident'`
|
|
197
208
|
and the `businessHourId` from Phase 1. Capture `id`. **The response echoes nulls — verify via
|
|
198
|
-
SOQL, not the
|
|
209
|
+
SOQL, not the body; narrate the policy by name, never the Id** (Output contract).
|
|
199
210
|
10. **Attach Milestone(s)** — load the request-body template from `assets/attach-milestone.json`
|
|
200
211
|
and, for each milestone in the strategy, populate `milestoneTypeId`, `timeTrigger`, `order`
|
|
201
212
|
(1..N in the strategy's order) and any per-pattern `filterItems` additions from
|
|
202
213
|
`examples/milestone-patterns.md`, then `POST /connect/sla-management/sla-policies/<slaId>/milestones`.
|
|
203
214
|
Each `milestoneCriteria[]` item needs `milestoneAgreementType` (`SLA`/`OLA`) and
|
|
204
215
|
`filterType: RuleFilter`. Do **not** put `slaProcessId` in the body — carried by the path.
|
|
205
|
-
|
|
206
|
-
|
|
216
|
+
One POST per milestone; on any failure, halt and surface the raw error (no half-attached policy) —
|
|
217
|
+
narrate each by `MilestoneType` name, never its Id/`triggerId` (Output contract).
|
|
207
218
|
11. **Create Entitlement** — `POST /sobjects/Entitlement` linking the resolved Account (from Phase 1
|
|
208
219
|
step 5), the SLA Policy (`SlaProcessId`), and Business Hours. For immediate engagement, backdate
|
|
209
|
-
`StartDate` to yesterday.
|
|
220
|
+
`StartDate` to yesterday — narrate it by name/Account, never its Id (Output contract).
|
|
210
221
|
|
|
211
222
|
### Phase 2-OOB — Seed the Predefined Incident Policy
|
|
212
223
|
|
|
213
|
-
Reached only from Phase 0.6 Predefined (replaces Phase 1.4/1.5/2). Follow the seed recipe
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
against the live picklist, and avoids the Connect activate PATCH. Then
|
|
218
|
-
|
|
224
|
+
Reached only from Phase 0.6 Predefined (replaces Phase 1.4/1.5/2). Follow the seed recipe in
|
|
225
|
+
`references/mcp-invocation.md` (**Predefined Incident Policy**) with `assets/predefined-incident-policy.json`
|
|
226
|
+
— it uses the **Phase 2 routes** (2 MilestoneTypes → SLA Policy `active:true` → 6 milestones,
|
|
227
|
+
each `startTimeBasedOn: MILESTONE_CRITERIA` → Entitlement), validates each `Priority`/`Status`
|
|
228
|
+
against the live picklist, and avoids the Connect activate PATCH. Then Phase 2.5 (if actions requested), Phase 3 (a non-lowest tier — Moderate/Low, not Critical),
|
|
229
|
+
and **STOP** — no *proactive* custom offer.
|
|
219
230
|
|
|
220
231
|
### Phase 2.5 — Milestone Actions (optional: Warn / Escalate)
|
|
221
232
|
|
|
222
233
|
After milestones exist (Phase 2 or 2-OOB), **only if** the user asked to warn/escalate/notify: apply
|
|
223
|
-
the requested checkpoint(s) to **every milestone the user named** (not just one),
|
|
224
|
-
|
|
234
|
+
the requested checkpoint(s) to **every milestone the user named** (not just one), each offset computed
|
|
235
|
+
from that milestone's own target. Map "warn at X%" → an offset *before* target, "on breach" →
|
|
225
236
|
*at/after* it; **confirm the full set before writing** (up-front auth waives the re-ask; narrate it
|
|
226
237
|
regardless — no headless delete), then, per milestone, delegate to headless
|
|
227
238
|
**`create-milestone-action`** (`discover` → `describe` → `dispatch`). **Confirm each from the response
|
|
228
239
|
body** (`success` + non-empty `actionMappings`; a *timed* checkpoint also returns a `triggerId`), never
|
|
229
|
-
the `201`.
|
|
240
|
+
the `201`. Narrate each by its **`MilestoneType` name**, never the milestone Id/`triggerId` (Output
|
|
241
|
+
contract). Formula, roles, proven body, defaults, IST business-hours note:
|
|
230
242
|
`references/mcp-invocation.md` (Milestone Actions).
|
|
231
243
|
|
|
232
244
|
### Phase 3 — Verify
|
|
233
245
|
|
|
234
246
|
12. **Verify the SLA Policy** — SOQL on `SlaProcess` (do not trust the create response).
|
|
235
|
-
13. **Create a test Incident** with `EntitlementId` set
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
247
|
+
13. **Create a test Incident** with `EntitlementId` set. For Priority-tiered / OOB strategies, test a
|
|
248
|
+
tier **other than the lowest `order`** — Critical is order-1, the collapse fallback, so it can't
|
|
249
|
+
detect a dropped criterion. If a direct `Priority`
|
|
250
|
+
insert is rejected (it may be matrix-derived), set `Urgency`/`Impact` to derive the tier. Narrate
|
|
251
|
+
by `IncidentNumber`, never the Id.
|
|
252
|
+
14. **Verify engagement + tiering** — SOQL that `Incident.SlaStartDate` is populated and the
|
|
253
|
+
`EntityMilestone` lands on the **correct tier** (a Moderate/Low Incident → the 240/960 tier, NOT
|
|
254
|
+
30/120). The create `201` always echoes `milestoneCriteria:[]`; only this runtime read proves the
|
|
255
|
+
ACTIVE criteria persisted.
|
|
241
256
|
15. **Report results** using the output format below.
|
|
242
257
|
|
|
243
258
|
---
|
|
@@ -246,42 +261,42 @@ the `201`. Formula, roles, proven body, defaults, and the IST business-hours not
|
|
|
246
261
|
|
|
247
262
|
| Constraint | Rationale |
|
|
248
263
|
|-----------|-----------|
|
|
249
|
-
| Gate
|
|
250
|
-
| Offer
|
|
251
|
-
|
|
|
252
|
-
| Ask (
|
|
253
|
-
| Reuse one MilestoneType per shared name;
|
|
254
|
-
|
|
|
255
|
-
| Priority-tiered: validate every `Priority` value against the live
|
|
256
|
-
| Entitlement is standard sObject DML
|
|
257
|
-
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
Additional API quirks (payload rules, operator enum, missing-criteria error): `references/mcp-invocation.md`.
|
|
264
|
+
| Gate **SLA Management** first (Phase 0.5) — one enable turns on the feature **and**, one-way, **SLA Versioning**; **two separate acks (master, then permanence) — never merged**; decline/blocked/verify-fail → **HALT**; re-read + report real state | Versioning is irreversible; writes don't confirm state |
|
|
265
|
+
| Offer **predefined (OOB)** first (Phase 0.6, Incident only); detect before seed; if chosen, seed → verify → **STOP** (no custom upsell) | OOB seed isn't idempotent — re-seed duplicates |
|
|
266
|
+
| `discover` + `describe` before any mutation | Catches a missing SLA surface / disabled Incident Mgmt early |
|
|
267
|
+
| Ask (`AskUserQuestion`) the milestone strategy — never silently default to Single | Real ITSM policies have >1 milestone |
|
|
268
|
+
| Reuse one MilestoneType per shared name; a distinct one per distinct concern | Runtime keys milestones by MilestoneType |
|
|
269
|
+
| Multi-milestone: halt on any milestone POST failure (no half-attached policy) | Partial attach diverges from the confirmed plan |
|
|
270
|
+
| Priority-tiered: validate every `Priority` value against the live picklist before dispatch | Server accepts any string → an unknown value is a dead milestone |
|
|
271
|
+
| Entitlement is standard sObject DML; `StartDate` controls status (future = Inactive) | Not on the `/connect/sla-management/` surface |
|
|
272
|
+
| **No record Id in any message** (see Output contract, incl. reused artifacts); `AskUserQuestion` labels customer-facing (no "demo"/internal defaults) | The #1 retest failure; leaked Ids / internal framing look unprofessional |
|
|
273
|
+
|
|
274
|
+
Additional API quirks: `references/mcp-invocation.md`.
|
|
261
275
|
|
|
262
276
|
---
|
|
263
277
|
|
|
264
278
|
## Verification Checklist
|
|
265
279
|
|
|
266
|
-
- [ ] **SLA Management gated (Phase 0.5)** — feature + SLA Versioning both on, only after the **permanence ack** (separate from the master ack); reported state
|
|
267
|
-
- [ ] **Predefined vs Custom offered (Phase 0.6)** — with the feature ON,
|
|
268
|
-
- [ ] Master Incident Mgmt pref (exact `service-cloud-itsm-incident`)
|
|
269
|
-
- [ ] `discover`/`describe`
|
|
280
|
+
- [ ] **SLA Management gated (Phase 0.5)** — feature + SLA Versioning both on, only after the **permanence ack** (separate from the master ack); reported state = a re-read, not the write. Declined / blocked / verify-fail → **HALTED** before Phase 0.6/1, no artifacts.
|
|
281
|
+
- [ ] **Predefined vs Custom offered (Phase 0.6)** — with the feature ON, OOB *Standard Support for Incidents* offered first; if present, reported not re-seeded; if chosen, seeded (2 MilestoneTypes + 6 milestones + Entitlement), verified, **no** custom offer after.
|
|
282
|
+
- [ ] Master Incident Mgmt pref (exact `service-cloud-itsm-incident`) `ENABLED` via live read, or delegated when `NOT_ENABLED` (`NOT_AVAILABLE` → HALT) — not a user assertion, not a look-alike.
|
|
283
|
+
- [ ] `discover`/`describe` confirmed the SLA Connect ops.
|
|
270
284
|
- [ ] Incident describe returned 200 with `EntitlementId`, `SlaStartDate`, `SlaExitDate`.
|
|
271
285
|
- [ ] Default BusinessHours found.
|
|
272
|
-
- [ ] **Milestone strategy resolved** —
|
|
273
|
-
- [ ] **Configuration confirmed OR skip condition met** (up-front
|
|
274
|
-
- [ ] Artifacts created in order (MilestoneType(s) → Policy → Milestone(s) → Entitlement)
|
|
286
|
+
- [ ] **Milestone strategy resolved** — Phase 1.4 skip condition OR `AskUserQuestion`; Priority-tiered / Custom validated every `Priority`/criteria value against the live picklist before dispatch.
|
|
287
|
+
- [ ] **Configuration confirmed OR skip condition met** (up-front auth / no-op / prior confirmation / "yes"); the resolved plan (org, SLA name, account, entitlement range, per-milestone list) narrated before Phase 2.
|
|
288
|
+
- [ ] Artifacts created in order (MilestoneType(s) → Policy → Milestone(s) → Entitlement), each POST 201; any milestone POST failure halted (no partial attach). Trivial on no-op.
|
|
275
289
|
- [ ] **Milestone actions (Phase 2.5)** — if requested, attached to **every** named milestone; each confirmed from `body.success` + `actionMappings`, not the `201`; full set narrated before write.
|
|
276
|
-
- [ ] SLA Policy verified via SOQL, not the create response (
|
|
277
|
-
- [ ] Test Incident has `SlaStartDate` populated (Priority
|
|
278
|
-
- [ ]
|
|
290
|
+
- [ ] SLA Policy verified via SOQL, not the create response (no-op: the Phase-1 read is the verification).
|
|
291
|
+
- [ ] Test Incident has `SlaStartDate` populated (Priority matched for Priority-tiered) and ≥1 EntityMilestone with correct TargetDate; expected milestone(s) present. Skip on no-op.
|
|
292
|
+
- [ ] **No record Id in any message** — interim narration *and* final report; artifacts by name, test Incident by `IncidentNumber` (see Output contract).
|
|
293
|
+
- [ ] Before/after + summary shown; no-op states the pre-existing config verbatim + "no changes made".
|
|
279
294
|
|
|
280
295
|
---
|
|
281
296
|
|
|
282
297
|
## Output Format
|
|
283
298
|
|
|
284
|
-
|
|
299
|
+
Use the `examples/output-templates.md` templates; fill placeholders as-is. The success report must carry, unambiguously: the **SLA Policy**; **every milestone** by MilestoneType name + time + criteria; the **Entitlement → Account**; **every requested action** by milestone + Warning/Violation role + offset + how confirmed; a **Verification** section (SOQL-confirmed policy + test-Incident `SlaStartDate`/EntityMilestones, or an honest partial note); created-vs-reused per artifact; a **scope line** (only the Incident SLA). No record Id anywhere.
|
|
285
300
|
|
|
286
301
|
---
|
|
287
302
|
|
|
@@ -289,18 +304,17 @@ See `examples/output-templates.md` for the canonical failure / single-milestone
|
|
|
289
304
|
|
|
290
305
|
| File | When to read |
|
|
291
306
|
|------|--------------|
|
|
292
|
-
| `references/mcp-invocation.md` | Every phase —
|
|
293
|
-
| `examples/milestone-patterns.md` | Phase 1.4 — the five
|
|
294
|
-
| `
|
|
295
|
-
| `assets/
|
|
296
|
-
| `assets/
|
|
297
|
-
| `
|
|
307
|
+
| `references/mcp-invocation.md` | Every phase — call shapes, templates, response envelope, discovery, gotchas |
|
|
308
|
+
| `examples/milestone-patterns.md` | Phase 1.4 — the five strategies: times, criteria, MilestoneType reuse, filter extensions |
|
|
309
|
+
| `assets/attach-milestone.json` | Phase 2 step 10 — milestone POST body; substitute ids/timeTrigger/order; append `filterItems` |
|
|
310
|
+
| `assets/predefined-incident-policy.json` | Phase 0.6 / 2-OOB — OOB seed template (policy + 2 MilestoneTypes + 6 milestones, Moderate+Low merged) |
|
|
311
|
+
| `assets/attach-milestone-action.json` | Phase 2.5 — Warn/Escalate action body templates (Field Update); pair with mcp-invocation.md (Milestone Actions) |
|
|
312
|
+
| `examples/output-templates.md` | Output Format — success/partial report templates; fill placeholders, no record Id |
|
|
298
313
|
|
|
299
314
|
---
|
|
300
315
|
|
|
301
316
|
## Related Skills
|
|
302
317
|
|
|
303
318
|
The priority matrix (Impact × Urgency → Priority) is separate — `service-itsm-incident-priority-configure`;
|
|
304
|
-
if a Priority-tiered strategy is requested but `Incident.Priority`
|
|
305
|
-
|
|
306
|
-
are out of scope.
|
|
319
|
+
if a Priority-tiered strategy is requested but `Incident.Priority` lacks values, direct the user there
|
|
320
|
+
first. Other ITSM flows (Major Incident Mgmt, custom fields) are out of scope.
|
package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"businessHoursId": "<businessHoursId resolved in Phase 1>",
|
|
4
4
|
"timeTrigger": 60,
|
|
5
5
|
"order": 1,
|
|
6
|
-
"startTimeBasedOn": "
|
|
6
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
7
7
|
"milestoneCriteria": [
|
|
8
8
|
{
|
|
9
|
-
"milestoneState": "
|
|
9
|
+
"milestoneState": "ACTIVE",
|
|
10
10
|
"milestoneAgreementType": "SLA",
|
|
11
11
|
"filterType": "RuleFilter",
|
|
12
12
|
"filterItems": [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comment": "Out-of-box 'Standard Support for Incidents' predefined SLA policy —
|
|
2
|
+
"_comment": "Out-of-box 'Standard Support for Incidents' predefined SLA policy — a faithful replica of what Salesforce ITSM seeds when a customer clicks the Incident checkbox under 'Create Predefined Policies' in Setup (Incident process type only). Source of truth for Phase 2-OOB. This is a DATA template, not a ready-to-POST body: substitute <businessHoursId> / <AccountId> at runtime and translate the criteria per the recipe in references/mcp-invocation.md (Predefined Incident Policy). Byte-for-byte modeled on core service-itsm-impl default-sla-policies/incident.json (the resource DefaultSlaServiceImpl reads and seeds) + shared_core_ui_labels/incident-management.xml (DefaultSeededSla): 6 milestones — Critical (30/120) and High (60/240) each Priority Equals, plus a MERGED Moderate-or-Low tier (240/960) whose ACTIVE criterion is a Priority OR (filterLogic '1 OR 2' over two Equals rows, Moderate + Low). NOTE: the core template also carries a per-tier CANCEL criterion, but the public /connect/sla-management route has NO 'CANCEL' milestoneState (valid states: ACTIVE, COMPLETE, PAUSE, UNPAUSE) — so this replica OMITS cancelWhen. The ACTIVE Priority criterion alone gates engagement (an off-tier Incident never matches), making CANCEL redundant. Every milestone uses startTimeBasedOn MILESTONE_CRITERIA (the OOB timer starts when the milestone criteria first match, NOT from the SLA-process created date). WHY REPLICATE INSTEAD OF CALLING THE UI'S OWN API: the checkbox invokes DefaultSlaPolicyController.saveSelectedOptions, an @AuraEnabled controller (core/ui-service-itsm-components) whose only caller of DefaultSlaService.createDefaultSlaPolicies is that Aura action — there is NO public REST/Connect wrapper, so the headless MCP (which dispatches REST/Connect) cannot invoke the seeder directly; it reproduces the seeder's exact output via the public /connect/sla-management routes.",
|
|
3
3
|
|
|
4
4
|
"policy": {
|
|
5
5
|
"name": "Standard Support for Incidents",
|
|
@@ -27,72 +27,54 @@
|
|
|
27
27
|
"milestoneType": "Acknowledge Within",
|
|
28
28
|
"timeTrigger": 30,
|
|
29
29
|
"priorityTier": "Critical",
|
|
30
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
30
31
|
"activeWhen": { "field": "Priority", "operator": "Equals", "value": "Critical" },
|
|
31
|
-
"completeWhen": { "field": "Status", "operator": "NotEqual", "value": "New" }
|
|
32
|
-
"cancelWhen": { "field": "Priority", "operator": "NotEqual", "value": "Critical" }
|
|
32
|
+
"completeWhen": { "field": "Status", "operator": "NotEqual", "value": "New" }
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"order": 2,
|
|
36
36
|
"milestoneType": "Resolve Within",
|
|
37
37
|
"timeTrigger": 120,
|
|
38
38
|
"priorityTier": "Critical",
|
|
39
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
39
40
|
"activeWhen": { "field": "Priority", "operator": "Equals", "value": "Critical" },
|
|
40
|
-
"completeWhen": { "field": "Status", "filterLogic": "1 OR 2 OR 3", "rows": [ { "operator": "Equals", "value": "Resolved" }, { "operator": "Equals", "value": "Completed" }, { "operator": "Equals", "value": "Closed" } ] }
|
|
41
|
-
"cancelWhen": { "field": "Priority", "operator": "NotEqual", "value": "Critical" }
|
|
41
|
+
"completeWhen": { "field": "Status", "filterLogic": "1 OR 2 OR 3", "rows": [ { "operator": "Equals", "value": "Resolved" }, { "operator": "Equals", "value": "Completed" }, { "operator": "Equals", "value": "Closed" } ] }
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
"order": 3,
|
|
45
45
|
"milestoneType": "Acknowledge Within",
|
|
46
46
|
"timeTrigger": 60,
|
|
47
47
|
"priorityTier": "High",
|
|
48
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
48
49
|
"activeWhen": { "field": "Priority", "operator": "Equals", "value": "High" },
|
|
49
|
-
"completeWhen": { "field": "Status", "operator": "NotEqual", "value": "New" }
|
|
50
|
-
"cancelWhen": { "field": "Priority", "operator": "NotEqual", "value": "High" }
|
|
50
|
+
"completeWhen": { "field": "Status", "operator": "NotEqual", "value": "New" }
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"order": 4,
|
|
54
54
|
"milestoneType": "Resolve Within",
|
|
55
55
|
"timeTrigger": 240,
|
|
56
56
|
"priorityTier": "High",
|
|
57
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
57
58
|
"activeWhen": { "field": "Priority", "operator": "Equals", "value": "High" },
|
|
58
|
-
"completeWhen": { "field": "Status", "filterLogic": "1 OR 2 OR 3", "rows": [ { "operator": "Equals", "value": "Resolved" }, { "operator": "Equals", "value": "Completed" }, { "operator": "Equals", "value": "Closed" } ] }
|
|
59
|
-
"cancelWhen": { "field": "Priority", "operator": "NotEqual", "value": "High" }
|
|
59
|
+
"completeWhen": { "field": "Status", "filterLogic": "1 OR 2 OR 3", "rows": [ { "operator": "Equals", "value": "Resolved" }, { "operator": "Equals", "value": "Completed" }, { "operator": "Equals", "value": "Closed" } ] }
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
"order": 5,
|
|
63
63
|
"milestoneType": "Acknowledge Within",
|
|
64
64
|
"timeTrigger": 240,
|
|
65
|
-
"priorityTier": "Moderate",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
65
|
+
"priorityTier": "Moderate or Low",
|
|
66
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
67
|
+
"activeWhen": { "field": "Priority", "filterLogic": "1 OR 2", "rows": [ { "operator": "Equals", "value": "Moderate" }, { "operator": "Equals", "value": "Low" } ] },
|
|
68
|
+
"completeWhen": { "field": "Status", "operator": "NotEqual", "value": "New" }
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
"order": 6,
|
|
72
72
|
"milestoneType": "Resolve Within",
|
|
73
73
|
"timeTrigger": 960,
|
|
74
|
-
"priorityTier": "Moderate",
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"order": 7,
|
|
81
|
-
"milestoneType": "Acknowledge Within",
|
|
82
|
-
"timeTrigger": 240,
|
|
83
|
-
"priorityTier": "Low",
|
|
84
|
-
"activeWhen": { "field": "Priority", "operator": "Equals", "value": "Low" },
|
|
85
|
-
"completeWhen": { "field": "Status", "operator": "NotEqual", "value": "New" },
|
|
86
|
-
"cancelWhen": { "field": "Priority", "operator": "NotEqual", "value": "Low" }
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"order": 8,
|
|
90
|
-
"milestoneType": "Resolve Within",
|
|
91
|
-
"timeTrigger": 960,
|
|
92
|
-
"priorityTier": "Low",
|
|
93
|
-
"activeWhen": { "field": "Priority", "operator": "Equals", "value": "Low" },
|
|
94
|
-
"completeWhen": { "field": "Status", "filterLogic": "1 OR 2 OR 3", "rows": [ { "operator": "Equals", "value": "Resolved" }, { "operator": "Equals", "value": "Completed" }, { "operator": "Equals", "value": "Closed" } ] },
|
|
95
|
-
"cancelWhen": { "field": "Priority", "operator": "NotEqual", "value": "Low" }
|
|
74
|
+
"priorityTier": "Moderate or Low",
|
|
75
|
+
"startTimeBasedOn": "MILESTONE_CRITERIA",
|
|
76
|
+
"activeWhen": { "field": "Priority", "filterLogic": "1 OR 2", "rows": [ { "operator": "Equals", "value": "Moderate" }, { "operator": "Equals", "value": "Low" } ] },
|
|
77
|
+
"completeWhen": { "field": "Status", "filterLogic": "1 OR 2 OR 3", "rows": [ { "operator": "Equals", "value": "Resolved" }, { "operator": "Equals", "value": "Completed" }, { "operator": "Equals", "value": "Closed" } ] }
|
|
96
78
|
}
|
|
97
79
|
],
|
|
98
80
|
|
|
@@ -111,10 +93,10 @@
|
|
|
111
93
|
|
|
112
94
|
"_replicationNotes": {
|
|
113
95
|
"table": "Every criterion filters the Incident table (filterItems[].table = \"Incident\").",
|
|
114
|
-
"activeCriterion": "The public Attach-Milestone route's milestoneCriteria carries the ACTIVE criterion — filterType RuleFilter, milestoneState Active, milestoneAgreementType SLA (customer-facing; OLA is the internal alternative — W-23959162). The priority-tier row IS this active criterion.",
|
|
115
|
-
"
|
|
116
|
-
"orClause": "The core OOB template groups Moderate+Low into
|
|
96
|
+
"activeCriterion": "The public Attach-Milestone route's milestoneCriteria carries the ACTIVE criterion — filterType RuleFilter, milestoneState ACTIVE (UPPERCASE — the server matches this case-sensitively; a wrong-case 'Active' returns 201 but silently drops the criterion, collapsing every Incident onto the lowest-order/Critical tier), milestoneAgreementType SLA (customer-facing; OLA is the internal alternative — W-23959162). The priority-tier row IS this active criterion; it is what tiers the policy.",
|
|
97
|
+
"completion": "The OOB completion (Status In resolved-set) criterion uses milestoneState COMPLETE (UPPERCASE). There is NO CANCEL state on the public route (valid: ACTIVE, COMPLETE, PAUSE, UNPAUSE), so no cancel criterion is sent — the ACTIVE Priority criterion alone gates engagement (matches examples/milestone-patterns.md Pattern 3). Verify tiering by runtime: create a Moderate/Low test Incident and confirm its EntityMilestone lands on the 240/960 tier, not 30/120 (the create response always echoes milestoneCriteria:[] regardless of success, so it cannot confirm persistence).",
|
|
98
|
+
"orClause": "The core OOB template groups Moderate+Low into ONE tier via an ACTIVE filterLogic '1 OR 2' over two Priority Equals rows (Moderate, Low) — see incident.json orders 5-6. This template mirrors that exactly: orders 5-6 carry activeWhen.filterLogic '1 OR 2' with rows [Priority Equals Moderate, Priority Equals Low]. The public milestone-criteria route accepts this OR via customLogicExpression (the same MilestoneCriteriaInputRepresentation the /connect/sla-management milestones route consumes), so it need NOT be split into separate Equals milestones. Seed 6 milestones as listed. If the live route rejects the OR filterLogic, fall back to two separate Priority Equals milestones (Moderate, Low) with the same timeTriggers — behavior-equivalent. The merged tier has NO cancelWhen, matching the core template (orders 5-6 have ACTIVE + COMPLETE only).",
|
|
117
99
|
"statusIn": "Status 'In [Resolved, Completed, Closed]' has no single-row In operator, so each completeWhen above is already PRE-SPLIT into a filterLogic ('1 OR 2 OR 3') across three Status Equals rows — the data file never carries a route-rejected In operator. If the route rejects filterLogic, split into one Status Equals row per value (behavior-equivalent). Validate each Status/Priority value against the live Incident picklist before seeding.",
|
|
118
|
-
"midTier": "Map the mid tier to the org's ACTUAL mid-priority label — 'Moderate' on the standard ITSM picklist, but many orgs label it 'Medium'.
|
|
100
|
+
"midTier": "Map the mid tier to the org's ACTUAL mid-priority label — 'Moderate' on the standard ITSM picklist, but many orgs label it 'Medium'. In the merged orders 5-6 activeWhen.rows, use whichever label the live Incident.Priority picklist carries in place of 'Moderate' (keep the 'Low' row as-is). Drop a row from the OR only when its value is genuinely absent from the picklist, and note any dropped/relabeled tier in the report."
|
|
119
101
|
}
|
|
120
102
|
}
|
package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md
CHANGED
|
@@ -34,9 +34,9 @@ dispatch `AskUserQuestion` with the five options below. Priority-tiered requires
|
|
|
34
34
|
All strategies share these defaults unless overridden:
|
|
35
35
|
|
|
36
36
|
- `businessHoursId`: the default BusinessHours resolved in Phase 1 step 4
|
|
37
|
-
- `startTimeBasedOn`: `
|
|
37
|
+
- `startTimeBasedOn`: `MILESTONE_CRITERIA` (timer starts when the milestone's criteria first match; this is the OOB default — send this exact token, see `references/mcp-invocation.md` Attach Milestone)
|
|
38
38
|
- `milestoneAgreementType`: `SLA` — inside each `milestoneCriteria[]` item (mandatory per the UI). Valid UI values are `SLA` (customer-facing) or `OLA` (internal); the API accepts any string because the underlying field is `Text(40)` with no server-side picklist, but the UI renders unrecognized values as blank (W-23959162)
|
|
39
|
-
- `milestoneState`: `Active`
|
|
39
|
+
- `milestoneState`: `ACTIVE` (**uppercase — the server matches this value case-sensitively**; `Active`/`active` silently fail to register the criterion) inside `milestoneCriteria[]`
|
|
40
40
|
- `filterType`: `RuleFilter` (inside `milestoneCriteria[]`)
|
|
41
41
|
- Base filter row: `Incident.Status NotEqual Closed` (keeps every milestone alive until the
|
|
42
42
|
Incident closes; ANDs with pattern-specific criteria below)
|
|
@@ -142,7 +142,7 @@ Incident create (e.g. via the Priority Matrix), the milestone re-evaluates on th
|
|
|
142
142
|
| 2 | Incident Manager Escalation | 120 | *(none)* |
|
|
143
143
|
| 3 | Incident Executive Escalation | 480 | *(none)* |
|
|
144
144
|
|
|
145
|
-
All three run concurrently
|
|
145
|
+
All three run concurrently once their criteria match (`startTimeBasedOn: MILESTONE_CRITERIA`) — the "ladder" is enforced by the timers,
|
|
146
146
|
not by chaining. To fire automation at a milestone's warning/violation checkpoint (warn before
|
|
147
147
|
target, escalate on breach), attach a **milestone action** in Phase 2.5 — see
|
|
148
148
|
`references/mcp-invocation.md` (Milestone Actions). (Strictly *sequential* chaining across separate
|
package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md
CHANGED
|
@@ -54,8 +54,20 @@ Verification:
|
|
|
54
54
|
Chain: MilestoneTypes > SLA Policy > Milestones > Entitlement > Incident > EntityMilestones
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
If a test Incident was not created (verification partial), replace the Verification block with:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Verification:
|
|
61
|
+
SLA Policy confirmed active (Incident) with all <N> milestones attached.
|
|
62
|
+
No test Incident was created, so EntityMilestone firing was not exercised in this run.
|
|
63
|
+
```
|
|
64
|
+
|
|
57
65
|
## Success — milestone actions (Phase 2.5, when Warn/Escalate was requested)
|
|
58
66
|
|
|
67
|
+
Append this **Milestone Actions** block to the multi-milestone success report above — do not emit it
|
|
68
|
+
alone. The report must still carry the policy, both milestones (name, time, criteria), the
|
|
69
|
+
Entitlement, the Verification section, and the scope line below.
|
|
70
|
+
|
|
59
71
|
```text
|
|
60
72
|
Milestone Actions attached:
|
|
61
73
|
<MilestoneType name>:
|
|
@@ -65,11 +77,16 @@ Milestone Actions attached:
|
|
|
65
77
|
- Warning: fires <Y> min before target -> <action summary>
|
|
66
78
|
- Violation: fires at breach -> <action summary>
|
|
67
79
|
|
|
80
|
+
Warn offsets are computed per milestone (offset = round(target * (1 - warn%))); each milestone
|
|
81
|
+
keeps its own offset. Escalate-on-breach is a Violation at the target (offset 0).
|
|
82
|
+
|
|
68
83
|
Confirmation: each action was confirmed from its create response (success + action mapping
|
|
69
84
|
returned). The attached warning/escalation settings can't be independently queried after creation,
|
|
70
85
|
so that create-response confirmation is the verification.
|
|
86
|
+
|
|
87
|
+
Scope: only the Incident SLA setup was configured — no other Setup preference was changed.
|
|
71
88
|
```
|
|
72
89
|
|
|
73
|
-
No record
|
|
90
|
+
No record Ids in user-facing text — **every interim progress/narration message too**, not just these final templates (this enforces the SKILL.md **Output contract**): refer to the test Incident by its **`IncidentNumber`** and to milestones by their **`MilestoneType` name**, never the 15/18-char record Id.
|
|
74
91
|
|
|
75
92
|
**No implementation/MCP jargon in user-facing text.** Terms like "headless", "read-back", "dispatch", "Connect API", or operation ids are internal — never surface them in the report or narration. Say "the settings can't be independently queried after creation", **not** "no headless read-back". No files are produced — the skill mutates org configuration in place through headless-360 MCP dispatch.
|