service-omni-command-center-analyze

v2026.09.24

Use to analyze whether an org should use Command Center for Service V2 or classic Omni Supervisor and recommend the next action without making changes. Triggers: detect Command Center V2 versus classic, check supervisor readiness, choose a supervisor experience, diagnose Command Center availability, assess Omni Supervisor setup. Do not use to enable V2, assign permissions, or deploy configuration.

GitHub
Install command
npx skhub add forcedotcom/service-omni-command-center-analyze
Markdown
SKILL.md

service-omni-command-center-analyze

Decide, without changing anything, which supervisor experience an org should use and what to do next. Command Center for Service V2 is gated on three independent dimensions — org capability (release gater), the CommandCenterForServiceV2 org preference (whose ON-flip seeds the CommandCenterForServiceV2_L FlexiPage and registers the V2 tab), and the per-supervisor CommandCenterForServiceUser permission. A single boolean cannot express that, so this skill returns an explicit state plus the recommended follow-up skill (e.g. service-omni-supervisor-config-deploy for the classic path). It is the entry point of the Command Center flow — service-omni-channel-setup-coordinate runs it first — and is safe to run on any org, including production, because it only reads.

Inputs

bash scripts/analyze.sh <org-alias> [supervisor_username_or_id]
  • org-alias (required).
  • supervisor_username_or_id (optional). A Username (…@…) or 15/18-char User Id (005…). When given, the per-user CommandCenterForServiceUser permission is evaluated; when omitted, the permission dimension is reported as not-checked and readiness is org-level only.

Preconditions and safety

  • Target org authenticated via sf CLI, Service Cloud license, sf CLI ≥ 2.139.6.
  • Read-only — no safe_to_write guard is needed; the skill issues only SOQL/Tooling queries.

Run

analyze.sh gathers observable signals and maps them to a state:

SignalSourceMeaning
V2 capabilitySELECT Id FROM PermissionSet WHERE PermissionsCommandCenterForServiceUser = true probeIf the user-permission column does not exist on the org schema, V2 is not available.
Seeded FlexiPageTooling: FlexiPage where DeveloperName='CommandCenterForServiceV2_L'Present ⇒ the org preference was enabled and the page was seeded.
V2 tabTabDefinition (best-effort)Cross-checks the seed; a seed/tab mismatch indicates a partial provision.
Supervisor permissionPermissionSetAssignment joined on PermissionSet.PermissionsCommandCenterForServiceUserWhether the named supervisor can use V2.
Legacy configTooling: OmniSupervisorConfig countInformational for the classic path.

Behavior

States and recommended next action:

StateMeaningRecommended skill
v2_readyCapability + seed present (and supervisor has permission, if checked)verify only (coordinator proceeds to V2 verification)
v2_permission_missingV2 enabled but the named supervisor lacks CommandCenterForServiceUserManual — assign CommandCenterForServiceUser (headless-capable via PermissionSet; packaging pending)
v2_seed_incompleteCapability present but the FlexiPage/tab provisioning is inconsistentManual — re-check in Setup → Omni-Channel → Supervisor Settings (no supported public write API)
v2_available_not_enabledOrg supports V2 but the preference is offservice-omni-command-center-configure when the W-24039822 Metadata API contract is available; otherwise enable manually
legacy_selectedV2 capability absentservice-omni-supervisor-config-deploy
ambiguousA required signal could not be read through a supported APInone — blocks, do not guess

ambiguous is the only state that exits non-zero: the review's rule is to block rather than infer when state cannot be proven read-only. All other states exit 0 with status:"detected".

Output contract

A single JSON object: status (detected | blocked), state (one of the six above), recommended_action, recommended_skill, signals (v2_capability, seed_flexipage_present, v2_tab_present, supervisor{identifier,checked,has_command_center_permission}, legacy_omnisupervisorconfig_count), manual_actions, blocking_issue.

Limitations

  • The analyzer keeps using the seeded FlexiPage as its cross-release read signal. On releases containing W-24039822, service-omni-command-center-configure can write and re-read the preference through Settings:OmniChannel.
  • The release gater cannot be read directly; capability is inferred from the presence of the user-permission column on the org schema.
  • Tab detection is best-effort; when the tab query cannot run, v2_tab_present is "unknown" and state is derived from the remaining signals.
  • Read-only: it never enables V2, seeds pages, assigns permissions, or deploys config.

References

FileWhen to read
references/api-notes.mdThe three-dimensional V2 gate, why each signal is a proxy, and the exact queries used
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Apache-2.0

Source path

skills/service-omni-command-center-analyze

Default branch

main

Latest commit

5c7ac82

Tree SHA

d2b5791