--- name: sales-call-scoring-configure description: "Configure, set up, or repair AI Call Scoring (a.k.a. Call Coaching / Coaching Competencies) on an ECI-enabled Salesforce org. Flips ECICallScoringEnabled via SOAP Metadata API, enables Einstein Generative AI Platform if off, and manages Coaching Competency records (EnablementCompetencyDef Tooling API): install the 6 OOTB set, the 7 Momentum best-practice prompts, or conversationally author/edit/activate/deactivate custom competencies (8-active + 16000/255-char caps). TRIGGER when: user wants to turn on AI Call Scoring or Call Coaching, install OOTB or best-practice competencies, create/edit custom competencies, re-enable after sandbox refresh, or verify/repair partial Call Coaching setup on a 68+ ECI org. DO NOT TRIGGER when: no ECI license (direct to Agentforce for Sales), user wants to enable ECI/Momentum themselves (out of scope — Setup), Pipeline Management (use sales-agentforce-pipeline-management-configure), or custom agent (use agentforce-generate)." metadata: version: "1.0" domains: ["Sales"] minApiVersion: "68.0" relatedSkills: - "sales-agentforce-pipeline-management-configure" - "agentforce-generate" cliTools: - tool: ["sf"] semver: ">=2.0.0" - tool: ["jq"] semver: ">=1.6.0" - tool: ["curl"] semver: ">=7.0.0" accessCheck: - type: "orgPref" value: "ConversationPilotPref" - type: "userPerm" value: "ModifyAllData" --- # Sales Call Scoring — Configure Configure **Call Coaching** (a.k.a. AI Call Scoring / Coaching Competencies) on a Salesforce org. Detects the org's current state, enables dependent features it is authorized to enable, and flips the `ECICallScoringEnabled` org preference via the SOAP Metadata API. ## Scope **In scope** - **ECI-enabled orgs only.** The skill supports orgs on the ECI (Einstein Conversation Insights) arm (spike scope: ECI-only for MVP). - Detect which of the 4 PRD-scoped org states the org is in. - Enable **Einstein Generative AI Platform** if off (PRD-authorized dependency). - Flip `enableECICallScoring` to `true` via SOAP Metadata API v68. - Verify the change took effect. - Idempotent — clean exit on states 3 and 4 (already enabled). **Out of scope** - **River Rush / Momentum detection.** Deferred until that arm goes live — see Key Considerations. A Momentum-only org today is not distinguished from any other ECI-off org; it gets the generic "ECI is not enabled" message from Phase 3, not a Momentum-specific one. - **Enabling ECI or Momentum themselves.** PRD-explicit out-of-scope; the skill detects and messages the admin to enable ECI via Setup. - **License provisioning.** Missing base licenses (Agentforce for Sales, ECI license) require an account-team ticket. - **Competency CRUD.** Handled by sibling scripts in this same skill — see "Competency CRUD workflow" below (§S3-§S10) and the "Execution sequence" matrix. ## Prerequisites 1. **`sf` CLI authenticated** — `sf org login web --alias `. 2. ECI arm licensed and enabled: `ConversationPilot` org permission (Phase 0 purchase gate) and `enableCallCoaching` pref (Phase 1, the `ConversationPilotPref` preference). (River Rush/Momentum is a separate arm covered by the same server-side gate but not checked by this skill yet — see Key Considerations.) 3. Site gate `com.salesforce.eci.callScoringEnabled` open on the org's pod (RelEng-controlled; not admin-toggleable). Einstein GenAI Platform is a soft prerequisite — the skill enables it automatically when off. ## Clarifying Questions Ask the admin: target org alias? Sandbox refresh scenario? (The pref has `disableOnSandboxCopy=true`, so it must be re-flipped after every refresh — that's normal, not a failure.) ## Admin Communication Guidelines **CRITICAL**: This skill serves admin users, not developers. The full 13-rule spec with rationale for each rule lives in [`references/admin-communication.md`](references/admin-communication.md) — consult it before your first response in this skill. Summary of the load-bearing rules: 1. **Run all bash commands in background** (`run_in_background: true`). 2. **Speak admin language, not entity language** — "Call Coaching", "Coaching Competency", "active/inactive". Never `EnablementCompetencyDef`, `enableECICallScoring`, `EvaluationInstructions`, `SourceCompetencyTemplate` in primary chat text. 3. **Hide technical details** — no record Ids, DeveloperNames, Template enum keys, HTTP codes, SOAP responses, curl/jq internals, script paths, or phase numbers. Exception: the S9 verify markdown table (see [`references/competency-crud.md`](references/competency-crud.md) §S9). 4. **Chain automatically** — when a script prints `Next: