Kubeshark Installer
kubeshark/kubeshark
Installs and configures Kubeshark on a Kubernetes cluster, choosing between the quick CLI path and a Helm install with custom values.
Wires an existing, active Agentforce agent to a channel by resolving a fallback queue, setting up inbound routing (either PATCH SessionHandlerId on the MessagingChannel, or an inbound RoutingFlow…
$ npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills service-agentforce-channel-configure --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/service-agentforce-channel-configure .claude/skills/service-agentforce-channel-configure && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "service-agentforce-channel-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configure into .claude/skills/service-agentforce-channel-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-agentforce-channel-configure", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configureType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills service-agentforce-channel-configure --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/service-agentforce-channel-configure .agents/skills/service-agentforce-channel-configure && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "service-agentforce-channel-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configure into .agents/skills/service-agentforce-channel-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-agentforce-channel-configure", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills service-agentforce-channel-configure --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/service-agentforce-channel-configure .cursor/skills/service-agentforce-channel-configure && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "service-agentforce-channel-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configure into .cursor/skills/service-agentforce-channel-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-agentforce-channel-configure", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forcedotcom/sf-skills.git --path skills/service-agentforce-channel-configure--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills service-agentforce-channel-configure --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/service-agentforce-channel-configure .gemini/skills/service-agentforce-channel-configure && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "service-agentforce-channel-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configure into .gemini/skills/service-agentforce-channel-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-agentforce-channel-configure", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forcedotcom/sf-skills service-agentforce-channel-configureInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/service-agentforce-channel-configure .github/skills/service-agentforce-channel-configure && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "service-agentforce-channel-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configure into .github/skills/service-agentforce-channel-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-agentforce-channel-configure", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forcedotcom/sf-skills service-agentforce-channel-configure --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/service-agentforce-channel-configure .opencode/skills/service-agentforce-channel-configure && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "service-agentforce-channel-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-agentforce-channel-configure into .opencode/skills/service-agentforce-channel-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-agentforce-channel-configure", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
service-agentforce-channel-configureWires an existing, active Agentforce agent to a channel by resolving a fallback queue, setting up inbound routing (either PATCH SessionHandlerId on the MessagingChannel, or an inbound RoutingFlow…
Service Agentforce Channel Configure is an agent skill from forcedotcom/sf-skills. Wires an existing, active Agentforce agent to a channel by resolving a fallback queue, setting up inbound routing (either PATCH SessionHandlerId on the MessagingChannel, or an inbound RoutingFlow for Voice/Email), and optionally configuring outbound escalation. Use when the user wants to add a channel to an existing agent, connect an agent to a messaging or voice channel, route Voice or Email-to-Case to an Agentforce agent, or set up a fallback queue for an agent channel. Also applies to an existing Help Agent…
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 20 other files, including scripts, reference files and assets (for example `references/agent-wiring.md`, `references/botemaildefinition.md` and `references/channel-branch-email.md`).
It sits in DevOps & Cloud, covering Deployment. The repository describes itself as: Salesforce's curated collection of agent skills for building applications. Optimized for Agentforce Vibes, compatible with all AI tools. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4bbae5c. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditGlobGrepAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
sfpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Service Agentforce Channel Configure loads about 5.4k tokens when it runs, and up to ~25k if it reads all its reference files. Until then it costs about 264 tokens; SKILL.md has 2,180 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from forcedotcom/sf-skills at commit 4bbae5c, republished under its Apache-2.0 licence (© forcedotcom). 2,180 words, ~5,380 tokens.
.claude/skills/service-agentforce-channel-configure/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Adds inbound routing between an existing channel and an existing Agentforce agent. The agent receives work items from the channel; a fallback queue handles overflow when the agent is unavailable.
This skill is generic — it works for any Agentforce agent, not just the Help Agent template.
In scope:
QueueSobject SobjectTypesessionHandlerType=AgentforceServiceAgent + sessionHandlerQueue on an existing MessagingChannel, then binding SessionHandlerId via Data API PATCHPstnVoice MessagingChannel already exist (provisioned by the caller, e.g. service-helpagent-coordinate), then creating an inbound RoutingFlow (routingType: Copilot) that routes to the agent with the queue as fallbackBotEmailDefinition (Email Configuration) that links the agent to Service Email and binding it to the routing addressservice-agentforce-human-escalation-configureOut of scope:
agentforce-generate or service-helpagent-coordinateservice-digital-engagement-channel-configureservice-digital-engagement-deployment-configureDeveloperName and agent label (MasterLabel) — must be an existing, active agentDeveloperName (Branch A), or the channel name/context (Branches B/C)Steps are sequential. Read references/channel-types.md first to confirm the routing branch before proceeding.
This skill performs metadata/data writes (MessagingChannel edits, RoutingFlow deploys, agent republish). Before any write, classify the target org and refuse real production:
sf data query --target-org $ORG --json \
--query "SELECT Id, IsSandbox, TrialExpirationDate, OrganizationType FROM Organization LIMIT 1"safe_to_write is true only when IsSandbox=true, OR TrialExpirationDate is non-null (trial/CDO), OR OrganizationType is Developer Edition / Base Edition.safe_to_write is false, stop — state plainly that this is a real production customer org and escalation/channel wiring will not be applied. Do not proceed to any write phase.safe_to_write is true, show the write plan (which MessagingChannel/RoutingFlow/agent will change) and get explicit user confirmation of the target org before continuing.Never bypass this gate — a mistaken production write here reroutes live customer traffic.
Confirm the agent exists and has an active version:
# Get the definition
sf data query --target-org $ORG --json \
--query "SELECT Id, DeveloperName, MasterLabel FROM BotDefinition WHERE DeveloperName='{AGENT_DEVELOPER_NAME}'"
# Check for an Active version
sf data query --target-org $ORG --json \
--query "SELECT Id, Status FROM BotVersion WHERE BotDefinitionId='{BOT_DEFINITION_ID}' AND Status='Active' LIMIT 1"Stop with a clear message if the definition is not found or no version has Status = Active.
Branch A caveat — an Active BotVersion is necessary but NOT sufficient to bind as
sessionHandlerAsa. The platform only accepts an agent that is provisioned/connected as a deployable Agentforce Service Agent (typically anExternalCopilot). Binding an agent that is merely Active fails the Phase 2 deploy withOnly active Agentforce Service Agents are supported for a Messaging Channel. Confirm bindability read-only before writing: if any MessagingChannel on the org already usessessionHandlerType=AgentforceServiceAgent, retrieve it (sf project retrieve start --metadata "MessagingChannel:{EXISTING}" --target-org $ORG) and read its<sessionHandlerAsa>— that set is the org's provably-bindable ASAs. If the chosen agent is not a provisioned ASA and no bindable ASA exists, stop and reportBLOCKED: provide an agent that is provisioned as an Agentforce Service Agent.
Resolve the fallback queue and routing configuration — follow references/queue-resolution.md:
references/channel-types.md)AskUserQuestion or create newQueueRoutingConfig; create one with the correct capacity percentage if absentQUEUE_DEVELOPER_NAME, QUEUE_NAME, and QUEUE_IDBefore making any routing change, detect whether the channel already has active inbound routing (Branch A: non-empty SessionHandlerType; Branches B/C: any active RoutingFlow assigned to the service channel). If it does, first check whether the user's prompt already answered the timing choice ("do not cut over" / "wire manually" / "review first" → defer silently; "cut over now" / "activate immediately" → proceed silently). Only if the prompt is silent, warn via AskUserQuestion and let the user choose "Re-route now" or "Set up, then wire manually" — and on any ambiguous or no-selection response, default to the deferred path (never to a live re-route). When deferred, set DEFER_INBOUND_ROUTING=true, skip the channel-activation step in the chosen branch, and print the manual wiring instructions at the end of Phase 2.
If the channel has no existing routing, skip this gate entirely and proceed directly.
Full detection queries, exact AskUserQuestion block, deferred-flow rules per branch, and manual-wiring copy: references/live-traffic-gate.md.
No RoutingFlow required. Deploy the MessagingChannel with sessionHandlerType + sessionHandlerQueue only, then bind the bot via a Data API PATCH. sessionHandlerAsa is not accepted by the Metadata API at v67 — the deploy silently drops it and SessionHandlerId stays null unless you run the PATCH. The bot must be Active before the PATCH ("Only active Agentforce Service Agents are supported" otherwise).
Run all five steps in order. Perform retrieve and edit in the current SFDX project, so the deploy reads the edited .messagingChannel-meta.xml from force-app; do not use a temporary directory.
Retrieve the current MessagingChannel metadata into the working-directory project:
sf project retrieve start \
--metadata "MessagingChannel:{CHANNEL_DEVELOPER_NAME}" \
--target-org $ORGEdit the retrieved .messagingChannel-meta.xml in place — set exactly these two fields (do NOT add <sessionHandlerAsa>):
<sessionHandlerType>AgentforceServiceAgent</sessionHandlerType>
<sessionHandlerQueue>{QUEUE_DEVELOPER_NAME}</sessionHandlerQueue>Apply this edit with the file-editing tool (Edit/Write) so the change is saved to the retrieved file at force-app/main/default/messagingChannels/{CHANNEL_DEVELOPER_NAME}.messagingChannel-meta.xml in the working directory — do not hand-edit it through an inline sed/cat heredoc into a temp path. The deploy in step 3 must read this same on-disk file.
Deploy:
sf project deploy start \
--metadata "MessagingChannel:{CHANNEL_DEVELOPER_NAME}" \
--target-org $ORGIf the deploy fails with Only active Agentforce Service Agents are supported for a Messaging Channel, the agent is not a bindable ASA on this org (see the Phase 1 caveat). Do not retry with the same agent — the channel is left unchanged (the failed deploy is atomic). Report BLOCKED with the remediation: bind an agent already provisioned as an Agentforce Service Agent, or provision this one, then re-run.
Bind the bot via Data API PATCH:
CHAN_ID=$(sf data query --target-org $ORG --json \
--query "SELECT Id FROM MessagingChannel WHERE DeveloperName='{CHANNEL_DEVELOPER_NAME}'" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['result']['records'][0]['Id'])")
BOT_ID=$(sf data query --target-org $ORG --json \
--query "SELECT Id FROM BotDefinition WHERE DeveloperName='{AGENT_DEVELOPER_NAME}'" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['result']['records'][0]['Id'])")
QUEUE_ID=$(sf data query --target-org $ORG --json \
--query "SELECT Id FROM Group WHERE Type='Queue' AND DeveloperName='{QUEUE_DEVELOPER_NAME}'" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['result']['records'][0]['Id'])")
sf api request rest --method PATCH -o $ORG \
"/services/data/v67.0/sobjects/MessagingChannel/${CHAN_ID}" \
--body "{\"SessionHandlerId\":\"${BOT_ID}\",\"FallbackQueueId\":\"${QUEUE_ID}\"}"
# Expected: HTTP 204Verify:
sf data query --target-org $ORG --json \
--query "SELECT SessionHandlerId, FallbackQueueId FROM MessagingChannel WHERE Id='${CHAN_ID}'"Both SessionHandlerId and FallbackQueueId must be non-null.
No agent file changes — no republish needed. Proceed to Phase 3 (optional).
Wire the PstnVoice MessagingChannel through an inbound Copilot RoutingFlow, with the queue as fallback, and add the required modality voice: block before republishing the agent.
Follow references/channel-branch-voice.md end to end. Highlights:
PstnVoice MessagingChannel or have service-helpagent-coordinate provision one first using that skill's Voice channel reference; abort if the org uses a partner telephony provider (see references/channel-types.md).references/routing-flow.md, verifying ActiveVersionId is non-null.MessagingChannel metadata file for {CHANNEL_DEVELOPER_NAME} with sessionHandlerType=Flow, sessionHandlerFlow={FLOW_DEVELOPER_NAME}, sessionHandlerQueue={QUEUE_DEVELOPER_NAME}. Without this the flow is never executed and calls hang up. Verify SessionHandlerId starts with 300.modality voice: block (voice_id UgBBYS2sOqTuMpoF3BR0, "Mark", en_US) to the .agent file if missing; do not ask the user. Republish per references/agent-wiring.md.Proceed to Phase 3 (optional).
Let the user choose direct case-owner assignment or an Omni-Channel Copilot RoutingFlow. This branch requires API v68.0+, a connection service_email: surface, and a BotEmailDefinition.
Follow references/channel-branch-email.md end to end. Load-bearing gotchas (full walkthrough in that file):
--metadata-dir Settings:Case deploy, never a source --metadata Settings:Case deploy (it reads sourceApiVersion and mutates the user's project).AskUserQuestion): case-owner (caseOwner = the agent's bot user) or Omni-Channel flow (Copilot RoutingFlow + routingFlow/fallbackQueue). Resolve the bot user either way; routing fields go in the Step 4d deploy.connection service_email: surface via deactivate → publish → activate (a plain publish fails with couldn't find the default agent user). Batch the outbound route here too if escalation is wanted.--metadata-dir, then bind the routing address in one Settings:Case deploy (botEmailDefinition + Step 2 routing fields + the required casePriority). Stop on failure.Branch C is complete once the routing-address binding is verified. Proceed to Phase 3.
Authoritative owner: full agent-to-human escalation is owned by
service-agentforce-human-escalation-configure. This includes the escalation topic, planner coupling, staffed human queue, outbound flow, failure-threshold directives, republish, and deterministic verification.
After inbound routing is confirmed, ask the user:
"Inbound routing is now set up — the channel will route to [agent name]. Do you also want to configure outbound escalation so the agent can hand off to a human when requested?"
If yes, delegate to service-agentforce-human-escalation-configure. Pass the resolved agent,
channel type, context object, and fallback queue as known inputs. Do not duplicate that skill's
write or verification steps here.
| Rule | Rationale |
|---|---|
| Verify the agent exists and is Active before making any changes | Wiring a channel to a non-existent or inactive agent silently fails at runtime |
If the channel already has active inbound routing, honor an explicit defer/cutover intent in the prompt without asking; otherwise warn via AskUserQuestion and default to defer on ambiguity | Re-routing takes effect immediately and affects live traffic — queue and RoutingFlow creation always proceed; only the activation step is gated, and the safe default is non-destructive |
| When deferred, print exact manual wiring instructions before Phase 3 | The operator needs to know precisely what to run when they're ready to cut over |
| Never modify the MessagingChannel without retrieving the current metadata first | Overwriting without retrieval discards existing settings |
Branch A: no RoutingFlow, no agent republish; deploy sessionHandlerType + sessionHandlerQueue via metadata, then bind SessionHandlerId via Data API PATCH | sessionHandlerAsa is not accepted by the Metadata API at v67 — the deploy silently drops it, so bot binding must happen via the Data API PATCH after deploy. Bot must be Active before the PATCH |
| Branches B/C: always create a new RoutingFlow — never reuse existing org flows | OOB platform flows commonly have ActiveVersionId: null and cannot be referenced |
Branches B/C: use routingType: Copilot and copilotLabel — not QueueBased | QueueBased routes to the queue directly; Copilot routes to the agent first with the queue as fallback |
Queue Id must be queried and embedded in the RoutingFlow XML | The queueId parameter requires a hardcoded 18-char record Id — do not leave it empty |
Queue naming: {ChannelTypeLabel} Queue | Named after the channel type, not the agent |
| Outbound escalation is optional — never block inbound routing completion on it | Inbound and outbound are independent; inbound wiring is complete without the outbound step |
Branch C: deploy BotEmailDefinition via --metadata-dir, never --metadata BotEmailDefinition:<name> | Not in the CLI's SDR registry, so the named-type deploy fails; metadata-format works |
Branch C: do not wire an agent carrying a ServiceCustomerVerification topic to email | Detect and stop — do not auto-remove (may be legitimate for a multi-surface agent). See channel-branch-email.md Step 4a |
QueueSobject record with the correct SobjectType for the channel typeQueueRoutingConfig with the correct CapacityPercentage (50 / 100 / 25 for Chat / Voice / Email)SessionHandlerType = AgentforceServiceAgent after deploySessionHandlerId is non-null after the Data API PATCH (matches the bot's BotDefinition.Id, starts with 0Xx)FallbackQueueId is non-null after the Data API PATCH (matches the resolved queue Id)ActiveVersionId is non-nullroutingType = Copilot in the flow's routeWork actioncopilotLabel matches the agent's exact MasterLabelqueueId is populated (non-empty)EmailRoutingAddress record created with correct PersonalName and AddresscaseOrigin, saveEmailHeaders: true, addressType: EmailToCaseEinsteinServiceAgent with a bot user holding agentforceServiceAgentUser; active version carries the ServiceEmail surface; no ServiceCustomerVerification topic on the email agentEmailTemplate is SFX, HTML, public, and contains [[[GENERATED_CONTENT]]] + [[[LEGAL_DISCLOSURE]]]BotEmailDefinition deployed via --metadata-dir with success: true; legalDisclaimer/signature ≥10 charsbotEmailDefinition child set to the deployed component fullNamecaseOwner+caseOwnerType or routingFlow+fallbackQueue, with casePriority presentservice-agentforce-human-escalation-configure returned CONFIGURED or ALREADY-CONFIGURED| File | When to read |
|---|---|
references/channel-types.md | Phase 1 — determine SobjectType and routing branch |
references/queue-resolution.md | Phase 1 — queue lookup, creation, and Id capture |
references/live-traffic-gate.md | Phase 2 — detection queries, deferred-flow rules, and manual wiring copy for the live-traffic warning gate |
references/channel-branch-voice.md | Branch B — full Voice inbound wiring: PstnVoice channel selection, RoutingFlow, MessagingChannel assignment, modality voice: republish |
references/channel-branch-email.md | Branch C — full Email-to-Case wiring: API v68.0+ precondition gate, CaseSettings flags, EmailRoutingAddress + read-modify-write patch, inbound RoutingFlow, mandatory connection service_email: surface block, headless BotEmailDefinition deploy, routing-address binding |
references/botemaildefinition.md | Branch C Step 4 — BotEmailDefinition fields, save-time validation order, ASA template rules, --metadata-dir deploy recipe, ServiceEmail surface prerequisite, composite org gate |
references/routing-flow.md | Branches B/C — inbound RoutingFlow XML template, deploy, verify |
references/agent-wiring.md | Phase 3 (optional) — outbound escalation connection block |
assets/BotEmailDefinition.botEmailDefinition-meta.xml | Branch C Step 4c — starting template for the BotEmailDefinition source file |
assets/mdapi-package.xml | Branch C Step 4c — metadata-format package.xml for the --metadata-dir deploy |
assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email + .email-meta.xml | Branch C Step 4b (fallback) — minimal ASA-compliant SFX reply template when the user has none |
scripts/validate-botemaildefinition.py | Branch C Step 4c — validate the BotEmailDefinition file before deploy |
scripts/validate-emailtemplate.py | Branch C Step 4b (fallback) — validate the SFX template before deploy |
© forcedotcom, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files (scripts, references, assets) in skills/service-agentforce-channel-configure of forcedotcom/sf-skills.
Open the folder on GitHubat commit 4bbae5c
Service Agentforce Channel Configure next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Service Agentforce Channel Configure this skillforcedotcom/sf-skills | 1.1k | — | ~5.4k | Automated safety check: Notes | Apache-2.0 | |
| Kubeshark Installerkubeshark/kubeshark | 12k | — | ~3.6k | Automated safety check: Notes | Apache-2.0 | |
| GreptimeDB Dev Docker ImageGreptimeTeam/greptimedb | 6.7k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| KubeSphere ServiceMesh Managerkubesphere/kubesphere | 17k | — | ~2.4k | Automated safety check: Pass | Custom licence | |
| Vercelremotion-dev/remotion | 63k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| AWS Cdk Developmentzxkane/aws-skills | 367 | 2 repos | ~2.5k | Automated safety check: Pass | MIT |
kubeshark/kubeshark
Installs and configures Kubeshark on a Kubernetes cluster, choosing between the quick CLI path and a Helm install with custom values.
GreptimeTeam/greptimedb
Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.
kubesphere/kubesphere
Installs, checks and troubleshoots the KubeSphere ServiceMesh extension (Istio, Kiali, Jaeger), including grayscale release, sidecar injection, topology and tracing issues.
remotion-dev/remotion
Set up a Codex monitor for Vercel deployments and preview URLs.
zxkane/aws-skills
AWS Cloud Development Kit (CDK) expert for building cloud infrastructure with TypeScript/Python.
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
forcedotcom/sf-skills
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA plugins.
forcedotcom/sf-skills
Data Cloud 360° view of a single Agentforce session. An agent skill from forcedotcom/sf-skills.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply SLDS-compliant UI using the correct blueprints, styling hooks, utility classes, and icons.
forcedotcom/sf-skills
Lightning Web Components with PICKLES methodology and 165-point scoring.
Categories
Wires an existing, active Agentforce agent to a channel by resolving a fallback queue, setting up inbound routing (either PATCH SessionHandlerId on the MessagingChannel, or an inbound RoutingFlow…. Service Agentforce Channel Configure is an agent skill from forcedotcom/sf-skills. Wires an existing, active Agentforce agent to a channel by resolving a fallback queue, setting up inbound routing (either PATCH SessionHandlerId on the MessagingChannel, or an inbound RoutingFlow for Voice/Email), and optionally configuring outbound escalation.
Service Agentforce Channel Configure fits situations like: the user wants to add a channel to an existing agent; connect an agent to a messaging; email-to-Case to an Agentforce agent; set up a fallback queue for an agent channel.
Run `npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a claude-code`. Or copy the skill folder (skills/service-agentforce-channel-configure in forcedotcom/sf-skills) into .claude/skills/service-agentforce-channel-configure in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a codex`. Or copy the skill folder (skills/service-agentforce-channel-configure in forcedotcom/sf-skills) into .agents/skills/service-agentforce-channel-configure in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/sf-skills --skill service-agentforce-channel-configure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/service-agentforce-channel-configure, .gemini/skills/service-agentforce-channel-configure, .github/skills/service-agentforce-channel-configure and .opencode/skills/service-agentforce-channel-configure in your project.
Going by SKILL.md and its folder, Service Agentforce Channel Configure needs Python for the scripts in its folder and the command-line tools its instructions call (sf and python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Service Agentforce Channel Configure is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 19k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Service Agentforce Channel Configure: Kubeshark Installer (kubeshark/kubeshark, 12k stars), GreptimeDB Dev Docker Image (GreptimeTeam/greptimedb, 6.7k stars), KubeSphere ServiceMesh Manager (kubesphere/kubesphere, 17k stars) and Vercel (remotion-dev/remotion, 63k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
forcedotcom (a GitHub organization) maintains it in forcedotcom/sf-skills, which has 1,067 GitHub stars. The repository holds 252 skills in this directory. The repository was last updated on October 9, 2026.
Source: forcedotcom/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.