Churn Risk
indranilbanerjee/digital-marketing-pro
Score customer segments for churn risk from behavioral signals — email engagement decline, purchase recency, usage drops, support sentiment — producing a 0-100 risk scorecard with four tiers…
Agent skill
Enable CMDB Asset Discovery in Service Cloud ITSM against a production or sandbox org by turning on the service-cloud-itsm-discovery-integration feature, then grant a user the Discovery page by…
$ npx skills add forcedotcom/sf-skills --skill service-itsm-agentic-setup-cmdb-discovery-configure -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure .claude/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-itsm-agentic-setup-cmdb-discovery-configure into .claude/skills/service-itsm-agentic-setup-cmdb-discovery-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure .agents/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-itsm-agentic-setup-cmdb-discovery-configure into .agents/skills/service-itsm-agentic-setup-cmdb-discovery-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure .cursor/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-itsm-agentic-setup-cmdb-discovery-configure into .cursor/skills/service-itsm-agentic-setup-cmdb-discovery-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure .gemini/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-itsm-agentic-setup-cmdb-discovery-configure into .gemini/skills/service-itsm-agentic-setup-cmdb-discovery-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure .github/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-itsm-agentic-setup-cmdb-discovery-configure into .github/skills/service-itsm-agentic-setup-cmdb-discovery-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure .opencode/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/service-itsm-agentic-setup-cmdb-discovery-configure into .opencode/skills/service-itsm-agentic-setup-cmdb-discovery-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configureEnable CMDB Asset Discovery in Service Cloud ITSM against a production or sandbox org by turning on the service-cloud-itsm-discovery-integration feature, then grant a user the Discovery page by…
Service Itsm Agentic Setup Cmdb Discovery Configure is an agent skill from forcedotcom/sf-skills. Enable CMDB Asset Discovery in Service Cloud ITSM against a production or sandbox org by turning on the service-cloud-itsm-discovery-integration feature, then grant a user the Discovery page by assigning the IT Service Discovery Manager permission set and its license — the final CMDB setup layer, run after the CMDB feature, user access, and content bundle are in place. Use when the user asks to enable CMDB discovery, turn on asset discovery, enable service-cloud-itsm-discovery-integration, grant Discovery page…
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/mcp-invocation.md`).
It sits in Sales & Support. It works with Salesforce and Model Context Protocol. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5164d9. 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:
ReadAskUserQuestionmcp__headless-360__discovermcp__headless-360__describemcp__headless-360__dispatchmcp__headless-360__dispatch_readonlyFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From 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 Itsm Agentic Setup Cmdb Discovery Configure loads about 5.4k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 260 tokens; SKILL.md has 2,267 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 found no risky patterns in SKILL.md.
Automated 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); files beside SKILL.md are not scanned.
The full file from forcedotcom/sf-skills at commit e5164d9, republished under its Apache-2.0 licence (© forcedotcom). 2,267 words, ~5,398 tokens.
.claude/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Turns on Asset Discovery for CMDB by enabling the service-cloud-itsm-discovery-integration
feature, then grants a user access to the Discovery page by assigning the IT Service Discovery
Manager permission set (and its permission-set license). This is the final layer of CMDB setup —
it runs only after the base CMDB feature is enabled, users have CMDB access, and the CMDB Foundation
content bundle is installed. Every call runs through the Salesforce-hosted Headless-360 MCP server
(server key headless-360) via its four meta-tools (discover, describe, dispatch_readonly,
dispatch). The org is derived from the OAuth JWT bound to the current MCP session — the skill never
handles an org id, alias, or credentials — so this works identically against production and sandbox
with no per-user MCP install.
This skill covers the Discovery layer only — enabling the feature and granting Discovery page access to a user. The earlier CMDB layers are separate skills — see the end of this file.
CMDB is enabled in ordered layers, each gated on the prior one:
Layer 0 Org SKU / license Org perm ITSrvcsCnfgMgmnt (verify only — no API can set it).
Layer 1 Tenant provisioning CMDB tenant must reach status PROVISIONED (async).
Layer 2 CMDB feature Enable service-cloud-itsm-cmdb-integration (lifts the 403 gate).
Layer 3 User access Assign the PSL + CMDB permission sets to the user(s).
Layer 4 Content bundle Install the CMDB Foundation (base) content bundle.
Layer 5 Asset Discovery Enable service-cloud-itsm-discovery-integration + assign the
IT Service Discovery Manager permission set ← THIS SKILLDiscovery is recommended last, but it does not require the base CMDB feature to already be
on: the enable cascade-enables its dependency (the base CMDB feature) as part of turning Discovery
on, provided that feature's own prerequisites (e.g. a provisioned CMDB tenant) are met. The
enableBlockedReasons array in the pre-check is the authoritative blocker signal — a base CMDB feature
that is merely NOT_ENABLED appears under dependencyStatuses with empty enableBlockedReasons
and is not a blocker. So never tell the user a direct enable "will error out"; tell them it will
turn on CMDB first, then Discovery. Only a non-empty enableBlockedReasons (e.g. tenant not
provisioned) is a genuine unmet prerequisite that stops the enable.
Enabling the feature lifts the org-level gate; the Discovery permission set gives a user the Discovery page. This skill does both: it turns Discovery on for the org (Step 2) and then assigns the target user the license-backed
ItSrvcDscvrMgrPermissionSet("IT Service Discovery Manager", backed by PSLItSrvcDscvrMgrPsl) so they can actually open and use the Discovery page (Steps 4–7). That permission set is distinct from the four Configuration-Item permission sets (Reader / Owner / Type Reader / Type Manager) thatservice-itsm-agentic-setup-cmdb-access-assignassigns for CMDB data — a user holding only those will not have Discovery page access. The assignment step is idempotent: if the user already holds the Discovery permission set and its license, it is skipped and reported as already-done.
service-cloud-itsm-discovery-integration
feature; and — as a follow-up — assigning the IT Service Discovery Manager permission set (and its
permission-set license) to the target user so they can access the Discovery page.service-itsm-agentic-setup-cmdb-configure), assigning the four Configuration-Item permission sets
for CMDB data access (Layer 3 — service-itsm-agentic-setup-cmdb-access-assign), bundle
installation (Layer 4 — service-itsm-agentic-setup-cmdb-bundle-deploy), CMDB record CRUD, Service
Graph Connector configuration, identification rules, creating or editing permission sets.All operations dispatch through headless-360 MCP tools. Reads go through
mcp__headless-360__dispatch_readonly, writes through mcp__headless-360__dispatch — both take raw
HTTP: {"url": "<path>", "method": "GET|POST", "body"?: {...}, "queryParams"?: {...}} — not
{operation_id, arguments}. See references/mcp-invocation.md for the exact url / method /
body of every call. The four tools:
mcp__headless-360__discover — semantic search over the indexed operation catalog. The Setup/Connect
routes and the /query / /sobjects/... REST routes this skill uses are not always ranked first (or
indexed), so a miss does not mean the route is absent — dispatch the exact path directly (see
references/mcp-invocation.md).mcp__headless-360__describe — pull the full input schema and canonical route before any POST.mcp__headless-360__dispatch_readonly — the dispatcher for every read (GET).mcp__headless-360__dispatch — the dispatcher for every write (POST/PATCH).The skill never handles credentials — the org is bound to the current OAuth session. If a dispatch*
call returns an auth error, tell the user to re-authenticate the headless-360 MCP connection (and
confirm the session points at the intended org), then stop.
| Role | Permission set (Name) | Backing PSL (DeveloperName) | Grants |
|---|---|---|---|
| Discovery Manager | ItSrvcDscvrMgrPermissionSet | ItSrvcDscvrMgrPsl | Open and use the Discovery page |
Resolve the permission set's Id and its LicenseId at runtime (Step 5) rather than hardcoding IDs —
IDs differ per org.
Ask only what you cannot infer from conversation:
Do not re-ask for anything the user already provided; pre-populate and note "(from conversation)".
All steps are sequential and gated — do not advance past a failed check. Always read before you write: run the read-only pre-check before the enable, and the assignment checks before the assign.
The feature api name is service-cloud-itsm-discovery-integration.
dispatch_readonly({ "url": "/services/data/v67.0/connect/setup/discovery/feature/service-cloud-itsm-discovery-integration/status", "method": "GET" })status == ENABLED → feature already on; skip to verification (Step 3), then proceed to the access
follow-up (Steps 4–7).status == NOT_ENABLED with enableBlockedReasons: [] → clear to enable (Step 2). Before
confirming, inspect dependencyStatuses: if the base CMDB feature
(service-cloud-itsm-cmdb-integration) is listed there as NOT_ENABLED, that is not a blocker —
enabling Discovery will cascade-enable the base CMDB feature first, then Discovery. Tell the user
exactly that ("this will turn on CMDB first, then Asset Discovery"). Do not warn that it "will
error out" or offer to "let it report the dependency error" — neither happens.enableBlockedReasons non-empty → STOP and relay each reason to the user in plain language.
These are genuine unmet prerequisites the org still needs (e.g. the CMDB tenant is not provisioned,
so the base feature cannot be enabled). Point the user to the earlier CMDB setup skills (see "Common
failures") and do not attempt the enable.403 FUNCTIONALITY_NOT_ENABLED on this GET → the base CMDB gate itself is still closed; the org
needs service-itsm-agentic-setup-cmdb-configure first. Stop and route the user there.Skip this step if Step 1 already reported ENABLED.
dispatch({ "url": "/services/data/v67.0/connect/setup/discovery/feature/service-cloud-itsm-discovery-integration/enable", "method": "POST", "body": {} })
→ {"success": true}dispatch_readonly({ "url": "/services/data/v67.0/connect/setup/discovery/feature/service-cloud-itsm-discovery-integration/status", "method": "GET" })
→ expect status == ENABLEDstatus == ENABLED is the definitive confirmation that the feature is on. Once confirmed, continue
to the access follow-up below — the feature being on does not by itself give any user the Discovery page.
For "the current user" / "me" / "set up discovery" (do NOT use USER_ID() — Apex-only, rejected by
the REST query API; do NOT rely on /chatter/users/me or /connect/user-profiles/me — they 403 when
Chatter/Communities are off). Read the API root and parse the identity URL:
dispatch_readonly({ "url": "/services/data/v67.0/", "method": "GET" })The response identity field is a URL ending in /<orgId>/<userId> (the user Id is the last path
segment and starts with 005). Use that Id directly, or confirm it with a User query.
For a named user (username / email supplied):
dispatch_readonly({ "url": "/services/data/v67.0/query", "method": "GET", "queryParams": { "q": "SELECT Id, Username, Name, IsActive FROM User WHERE Username = '<username>'" } })Id.Resolve the permission set and its backing license:
dispatch_readonly({ "url": "/services/data/v67.0/query", "method": "GET", "queryParams": { "q": "SELECT Id, Name, LicenseId FROM PermissionSet WHERE Name = 'ItSrvcDscvrMgrPermissionSet'" } })Capture Id (the permission set) and LicenseId (the PSL to assign). totalSize == 0 means the org
is not licensed for Discovery — stop and report. Then check whether the user already has both:
dispatch_readonly({ "url": "/services/data/v67.0/query", "method": "GET", "queryParams": { "q": "SELECT Id FROM PermissionSetAssignment WHERE AssigneeId = '<userId>' AND PermissionSetId = '<psId>'" } })
dispatch_readonly({ "url": "/services/data/v67.0/query", "method": "GET", "queryParams": { "q": "SELECT Id FROM PermissionSetLicenseAssign WHERE AssigneeId = '<userId>' AND PermissionSetLicenseId = '<pslId>'" } })If both already exist, the role is already assigned — skip Step 6 and record it as already-done.
Skip whatever Step 5 shows already assigned. Assign the PSL first, then the permission set:
dispatch({ "url": "/services/data/v67.0/sobjects/PermissionSetLicenseAssign", "method": "POST", "body": { "AssigneeId": "<userId>", "PermissionSetLicenseId": "<pslId>" } })
dispatch({ "url": "/services/data/v67.0/sobjects/PermissionSetAssignment", "method": "POST", "body": { "AssigneeId": "<userId>", "PermissionSetId": "<psId>" } })201 → assigned.400 DUPLICATE_VALUE → the user already had it; treat as success (idempotent), not a failure.references/mcp-invocation.md for the seat query). Do not retry.Re-run the two Step 5 assignment queries. The user has Discovery page access only when both the
PermissionSetAssignment and the PermissionSetLicenseAssign return totalSize == 1.
| Constraint | Rationale |
|---|---|
| Running after the base CMDB feature is recommended, not required | Discovery depends on the base CMDB feature, but the enable cascade-enables it when it is only NOT_ENABLED (empty enableBlockedReasons); message the cascade — never claim a direct enable "will error out". The pre-check enableBlockedReasons is what actually gates the enable |
| Read the pre-check before enabling; verify with a read after enabling | The feature is stateful; the POST response can lag the real state |
Do not attempt the enable when enableBlockedReasons is non-empty | Those are unmet prerequisites — relay them and route the user to the earlier CMDB skills |
| Always follow the enable with the Discovery-Manager assignment | The feature being on does not give any user the Discovery page; the permission set is what grants page access |
| Resolve the user to exactly one record before assigning | Assigning to the wrong (or an ambiguous) user is hard to reverse and a security concern |
| Read existing assignments before assigning; assign the PSL before the permission set | The permission set is license-backed and per-user — re-assigning throws DUPLICATE_VALUE; the license seat must be held for the assignment to stick |
Treat DUPLICATE_VALUE as success | It means the user already has that access — idempotent, not an error |
| Never create or edit permission sets | This skill only assigns the standard Discovery permission set |
| Confirm the target org, user, and each write with the user | These are real, hard-to-reverse changes on a live org |
| Never expose internal jargon to the user | Keep record IDs, org IDs, HTTP status codes (403/500/…), API error codes (FUNCTIONALITY_NOT_ENABLED, DUPLICATE_VALUE, …), object names (PermissionSetLicenseAssign), endpoint names, feature api names (service-cloud-itsm-discovery-integration), developer names (ItSrvcsCnfgMgmnt, ItSrvcDscvrMgrPsl, …), and tooling internals (dispatch, headless-360) out of user-facing output. Translate to plain language; use human-readable names and statuses |
enableBlockedReasons: [] before enabling (or status == ENABLED already)?success: true (or skipped because already enabled)?status == ENABLED?CMDB Asset Discovery — Complete (via service-itsm-agentic-setup-cmdb-discovery-configure)
Target org: <org>
User: <name> (<username>)
Asset Discovery ................... Enabled
IT Service Discovery Manager ...... Assigned (or: Already had access)
Asset Discovery is now enabled on this org and the user above can open and use the
Discovery page. This completes CMDB setup — the base feature, user access, content
bundle, and discovery are all in place.
To give additional users the Discovery page, re-run this and name each user (or use
service-itsm-agentic-setup-cmdb-access-assign for the underlying CMDB data roles).Keep internal jargon out of user-facing output (no record IDs, HTTP status codes, error codes, object,
endpoint or developer names) — say "IT Service Discovery Manager access", not the developer name. If any
step fails, stop and tell the user — in plain language — which part didn't succeed and what it means for
them, then point to the relevant fix. Translate any raw error (e.g. a 403 or FUNCTIONALITY_NOT_ENABLED)
into what it means ("CMDB isn't fully set up yet"), rather than echoing the code.
| Symptom | Likely cause | What to tell the user |
|---|---|---|
Pre-check enableBlockedReasons non-empty | A deeper prerequisite is genuinely unmet (e.g. the CMDB tenant is not provisioned — note a base CMDB feature that is only NOT_ENABLED does not populate this array; it cascade-enables) | Relay each reason; finish CMDB setup first — run service-itsm-agentic-setup-cmdb-configure (provision tenant + base feature), then -access-assign (user access) and -bundle-deploy (content bundle), then retry discovery |
Base CMDB feature was NOT_ENABLED before the discovery enable, and enabling discovery turned it on too | Expected — the discovery enable cascade-enables its base CMDB dependency; this is not a failure | Tell the user upfront (before enabling) that this will turn on CMDB first, then Discovery; never warn it "will error out" |
403 FUNCTIONALITY_NOT_ENABLED on the status GET | Base CMDB gate still closed (CMDB feature not enabled) | Not a discovery failure — enable the base CMDB feature first with service-itsm-agentic-setup-cmdb-configure, then retry |
Enable blocked (enableBlockedReasons non-empty) after a partial setup | Missing dependency the org still needs | Relay each reason; resolve those prerequisites, then retry |
Enable returned success but verification GET is not ENABLED | State lag or a downstream issue | Re-run the verification GET after a short wait; if it persists, treat it as not enabled and investigate |
PermissionSet query totalSize == 0 for ItSrvcDscvrMgrPermissionSet | Org not licensed for Discovery | Discovery access is not available on this org; confirm it is licensed |
400 DUPLICATE_VALUE on the assignment | User already has Discovery page access | Not an error — report the role as already assigned |
| License-limit / no-seats error on the assignment | Discovery permission-set license seats exhausted | Report seats in use vs available; a seat must free up (or more licenses added) before assigning |
Discovery is ENABLED and the feature turned on, but a user still can't open the Discovery page | The user was never assigned the Discovery permission set (ItSrvcDscvrMgrPermissionSet / PSL ItSrvcDscvrMgrPsl) | Re-run this skill for that user (Steps 4–7) to grant "IT Service Discovery Manager" access |
dispatch* auth error | headless-360 MCP session not authenticated / token expired | Re-authenticate the headless-360 MCP connection and confirm the session points at the intended org |
| When | Skill |
|---|---|
The pre-check reports a genuine blocker (enableBlockedReasons non-empty — e.g. the CMDB tenant is not provisioned) | service-itsm-agentic-setup-cmdb-configure (Layers 0–2 — provision the tenant and enable the base feature, then return here). A base feature that is only NOT_ENABLED is not a blocker — Discovery cascade-enables it |
| A user needs the underlying CMDB data roles (Configuration Item Reader / Owner / Type Reader / Type Manager) | service-itsm-agentic-setup-cmdb-access-assign (Layer 3 — CMDB data access, distinct from Discovery page access) |
| File | When to read |
|---|---|
references/mcp-invocation.md | Exact dispatch* url/method/body for the pre-check, enable, verify, user resolution, and Discovery-Manager assignment calls, response envelopes, the license-seat query, and error table |
© 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 1 other file (references) in skills/service-itsm-agentic-setup-cmdb-discovery-configure of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Service Itsm Agentic Setup Cmdb Discovery 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 Itsm Agentic Setup Cmdb Discovery Configure this skillforcedotcom/sf-skills | 1.1k | — | ~5.4k | Automated safety check: Pass | Apache-2.0 | |
| Churn Riskindranilbanerjee/digital-marketing-pro | 859 | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Lead Importindranilbanerjee/digital-marketing-pro | 859 | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Pipeline Updateindranilbanerjee/digital-marketing-pro | 859 | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Zsxqunnoo/zsxq-skill | 304 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Agentforce GenerateSalesforceAIResearch/agentforce-adlc | 114 | 1 repos | ~7.4k | Automated safety check: Pass | Custom licence |
indranilbanerjee/digital-marketing-pro
Score customer segments for churn risk from behavioral signals — email engagement decline, purchase recency, usage drops, support sentiment — producing a 0-100 risk scorecard with four tiers…
indranilbanerjee/digital-marketing-pro
Import leads into Salesforce, HubSpot, Zoho, or Pipedrive with validation, deduplication against existing CRM records, lead scoring, consent and compliance checks, and source attribution — then push…
indranilbanerjee/digital-marketing-pro
Update CRM deals — move stages, change values and close dates, attach notes and activities, create follow-up tasks — with validation against pipeline rules, a before-and-after comparison, and…
unnoo/zsxq-skill
知识星球 CLI(zsxq-cli)与底层接口完整操作指南,涵盖星球和内容管理、Skill Pay 微信支付场景。当用户提到知识星球、zsxq、小密圈、星球、登录/认证、发帖、评论、回答、编辑、删除主题、定时发布/定时任务/定时回答、投票、问答主题、markdown 正文、AI…
SalesforceAIResearch/agentforce-adlc
Build, modify, audit, repair, optimize, debug, and deploy agents with Agentforce Agent Script.
romangojiberryAI/gojiberryai-sales-os
A complete outbound sales department in one skill. An agent skill from romangojiberryAI/gojiberryai-sales-os.
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.
Works with
Categories
Enable CMDB Asset Discovery in Service Cloud ITSM against a production or sandbox org by turning on the service-cloud-itsm-discovery-integration feature, then grant a user the Discovery page by…. Service Itsm Agentic Setup Cmdb Discovery Configure is an agent skill from forcedotcom/sf-skills. Enable CMDB Asset Discovery in Service Cloud ITSM against a production or sandbox org by turning on the service-cloud-itsm-discovery-integration feature, then grant a user the Discovery page by assigning the IT Service Discovery Manager permission set and its license — the final CMDB setup layer, run after the CMDB feature, user access, and content bundle are in place.
Service Itsm Agentic Setup Cmdb Discovery Configure fits situations like: the user asks to enable CMDB discovery; turn on asset discovery; enable service-cloud-itsm-discovery-integration; grant Discovery page access.
Run `npx skills add forcedotcom/sf-skills --skill service-itsm-agentic-setup-cmdb-discovery-configure -a claude-code`. Or copy the skill folder (skills/service-itsm-agentic-setup-cmdb-discovery-configure in forcedotcom/sf-skills) into .claude/skills/service-itsm-agentic-setup-cmdb-discovery-configure in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill service-itsm-agentic-setup-cmdb-discovery-configure -a codex`. Or copy the skill folder (skills/service-itsm-agentic-setup-cmdb-discovery-configure in forcedotcom/sf-skills) into .agents/skills/service-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-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-itsm-agentic-setup-cmdb-discovery-configure, .gemini/skills/service-itsm-agentic-setup-cmdb-discovery-configure, .github/skills/service-itsm-agentic-setup-cmdb-discovery-configure and .opencode/skills/service-itsm-agentic-setup-cmdb-discovery-configure in your project.
SKILL.md names no scripts, command-line tools or credentials: Service Itsm Agentic Setup Cmdb Discovery Configure is instructions for the agent only. Its frontmatter pre-approves these tools: Read, AskUserQuestion, mcp__headless-360__discover, mcp__headless-360__describe, mcp__headless-360__dispatch, mcp__headless-360__dispatch_readonly.
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 no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Service Itsm Agentic Setup Cmdb Discovery 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 3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Service Itsm Agentic Setup Cmdb Discovery Configure: Churn Risk (indranilbanerjee/digital-marketing-pro, 859 stars), Lead Import (indranilbanerjee/digital-marketing-pro, 859 stars), Pipeline Update (indranilbanerjee/digital-marketing-pro, 859 stars) and Zsxq (unnoo/zsxq-skill, 304 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,065 GitHub stars. The repository holds 251 skills in this directory. The repository was last updated on October 7, 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.