Agent skill · forcedotcom
service-omni-service-channel-configure
Use to ensure exactly one ServiceChannel exists on a Salesforce org for a routable sObject (Case | Incident | MessagingSession | VoiceCall), reusing any standard or custom channel already bound to that sObject and only deploying a canonical template when none exists. Salesforce enforces one ServiceChannel per RelatedEntity, so the skill detects via the Tooling API first. Standard channels ship for Case (Cases), MessagingSession (sfdc_livemessage), VoiceCall (sfdc_phone); Incident has none. Triggers: configure ServiceChannel for Case/Incident/Messaging/Voice routing, add Incident or Voice routing to Omni. Do not use to tune per-sObject capacity (use PresenceUserConfig.Capacity), to reset a mis-configured channel to canonical shape, or for sObjects outside Case/Incident/MessagingSession/VoiceCall.
What it needs
About 3k tokens when loaded.
What this skill does
service-omni-service-channel-configure Ensure exactly one ServiceChannel is present for a routable sObject, reusing whatever is already bound (Salesforce standard or a pre-existing custom channel) and deploying the skill's canonical v66 template only when none exists. Salesforce enforces one ServiceChannel per RelatedEntity, so the skill detects first and never deploys blindly — deploying a second channel for an sObject that already has one fails with "This Salesforce object is already in use by another Service channel." It handles one sObject per call; callers configuring multiple sObjects invoke it once for each sObject, after service-omni-base-settings-configure has enabled Omni-Channel. sObject Standard channel (if any) Canonical asset --- --- --- Case Cases Cases.serviceChannel-meta.xml Incident none (Incident Management sObject) Incidents.serviceChannel-meta.xml — deployed on first run MessagingSession sfdclivemessage MessagingSessions.serviceChannel-meta.xml — deployed only if the standard channel is missing VoiceCall sfdcphone VoiceCalls.serviceChannel-meta.xml — deployed only if the standard channel is missing Inputs org-alias (required). sobjecttype (optional, default Case) — one of Case Incident MessagingSession VoiceCall. Preconditions and safety Target org authenticated via sf CLI (My Domain URL), Service Cloud license, sf CLI ≥ 2.139.6. Omni-Channel base settings enabled (service-omni-base-settings-configure) — ServiceChannel is only queryable/writable when enableOmniChannel=true; a INVALIDTYPE on deploy means base settings are off. Incident requires the Incident Management feature enabled; MessagingSession requires Enhanced Messaging. The skill verifies EntityDefinition first and blocks with a click-path when the target sObject is absent. Run deploy-and-report.sh performs the prereq check, discovery, and (only when needed) deploy, then emits the report: 1. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills forcedotcom/service-omni-service-channel-configure--dd2e0d