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:
Behavior
States and recommended next action:
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
CommandCenterForServiceV2 org preference has no supported public read; its state is inferred from the seeded FlexiPage (the platform seeds on the ON-flip). This is called out in signals and is why a bare capability-without-seed reads as v2_available_not_enabled.
- 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