@salesforce/afv-skills 1.44.0 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/consumer-goods-rtr-datacloud-export-configure/SKILL.md +72 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/references/inputs-and-namespace.md +38 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/references/procedure.md +158 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/detect-namespace.js +86 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/render-apex.js +64 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/resolve-id-by-name.js +47 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/sf-rest.js +171 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/soql-escape.js +26 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/upsert-report-config.apex +51 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/upsert-system-setting.apex +21 -0
- package/skills/consumer-goods-tpe-dashboard-configure/SKILL.md +74 -0
- package/skills/consumer-goods-tpe-dashboard-configure/references/phases-1-6.md +112 -0
- package/skills/consumer-goods-tpe-dashboard-configure/references/phases-7-12.md +157 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/find-failure-reason.js +132 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/poll-status.js +116 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/render-apex.js +64 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/run-data-transform.js +121 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/schedule-business-period-export.apex +27 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/sf-rest.js +171 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/soql-escape.js +25 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/SKILL.md +141 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/references/payload-shapes.md +447 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/references/procedure.md +263 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/scripts/clone-tpe-dashboards.js +537 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/scripts/sf-rest.js +195 -0
- package/skills/consumer-goods-tpe-datakit-deploy/SKILL.md +157 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/detect-namespace.js +86 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/download-static-resource.js +151 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/extract-crm-field-permissions.js +115 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/sf-rest.js +109 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/update-field-permissions.js +433 -0
- package/skills/service-catalog-template-coordinate/SKILL.md +263 -0
- package/skills/service-catalog-template-coordinate/examples/output-templates.md +44 -0
- package/skills/service-catalog-template-coordinate/references/mcp-invocation.md +183 -0
- package/skills/service-catalog-template-coordinate/references/operations.md +230 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/SKILL.md +243 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/cli-invocation.md +205 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/helper-contracts.md +236 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/permset-topology.md +132 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-activated-agents.mjs +106 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-agent-access-state.mjs +113 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-assignment-state.mjs +99 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-platform-permset-availability.mjs +155 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/gate-unified-catalog-tiers.mjs +100 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/rank-candidate-users.mjs +95 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/resolve-target-user.mjs +86 -0
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +44 -23
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +33 -9
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +17 -18
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +3 -1
- package/skills/service-itsm-agentic-setup-configure/SKILL.md +20 -12
- package/skills/service-itsm-agentic-setup-configure/examples/output-templates.md +73 -5
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -7
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/cli-invocation.md +45 -33
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/reactivation.md +8 -6
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +10 -10
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/classify-agent-existence.mjs +114 -56
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/classify-preflight.mjs +33 -17
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +9 -3
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/cli-invocation.md +43 -32
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/reactivation.md +6 -4
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +10 -10
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-agent-existence.mjs +106 -55
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-preflight.mjs +27 -13
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +9 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +159 -161
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json +51 -0
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +1 -1
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +120 -0
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +28 -5
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +19 -1
- package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +350 -30
- package/skills/service-itsm-channels-coordinate/SKILL.md +80 -213
- package/skills/service-itsm-slack-itservice-configure/SKILL.md +363 -0
- package/skills/service-itsm-slack-itservice-configure/references/connect-agentforce-to-slack.md +159 -0
- package/skills/service-itsm-slack-itservice-configure/references/manage-slack-connection.md +88 -0
- package/skills/service-itsm-slack-itservice-configure/references/manage-user-access.md +117 -0
- package/skills/service-itsm-slack-itservice-configure/references/record-visibility.md +78 -0
- package/skills/service-itsm-slack-itservice-configure/references/site-membership-verification.md +126 -0
- package/skills/service-itsm-slack-itservice-configure/scripts/classify-user-access.mjs +167 -0
- package/skills/service-itsm-teams-configure/SKILL.md +50 -47
- package/skills/service-itsm-teams-configure/references/azure-credential-population.md +42 -28
- package/skills/service-itsm-teams-configure/references/gotchas.md +1 -2
- package/skills/service-itsm-teams-coordinate/SKILL.md +22 -18
- package/skills/service-itsm-teams-coordinate/examples/output-templates.md +12 -9
- package/skills/service-itsm-teams-itdesk-configure/SKILL.md +60 -44
- package/skills/service-itsm-teams-itservice-configure/SKILL.md +56 -70
- package/skills/service-catalog-template-deploy/SKILL.md +0 -310
- package/skills/service-catalog-template-deploy/references/cli-invocation.md +0 -258
- package/skills/service-catalog-template-deploy/scripts/activate-verify.mjs +0 -164
- package/skills/service-catalog-template-deploy/scripts/build-deploy-payload.mjs +0 -94
- package/skills/service-catalog-template-deploy/scripts/resolve-template.mjs +0 -331
- package/skills/service-catalog-template-search/SKILL.md +0 -212
- package/skills/service-catalog-template-search/references/cli-invocation.md +0 -128
- package/skills/service-catalog-template-search/scripts/classify-catalog.mjs +0 -205
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Deterministic target-user resolver for the agent-runtime-access-assign flow.
|
|
3
|
+
//
|
|
4
|
+
// Reads the `GET /services/data/v67.0/` capture (or an equivalent versions-list
|
|
5
|
+
// response the CLI writes when hitting the API root), and extracts the running
|
|
6
|
+
// user's Id from the `identity` URL. The URL shape is:
|
|
7
|
+
// https://<mydomain>.my.salesforce.com/id/<orgId 00D…>/<userId 005…>
|
|
8
|
+
// so we take the LAST path segment and require it to start with `005` and be
|
|
9
|
+
// 15 or 18 chars (case-preserving).
|
|
10
|
+
//
|
|
11
|
+
// This exists so no prose step ever tries to parse the identity URL by hand
|
|
12
|
+
// (A9 — deterministic decisions belong in scripts).
|
|
13
|
+
//
|
|
14
|
+
// Usage:
|
|
15
|
+
// node resolve-target-user.mjs <api-root.json>
|
|
16
|
+
//
|
|
17
|
+
// Emits a single JSON object to stdout:
|
|
18
|
+
// { userId: "005…" | null,
|
|
19
|
+
// identity: "<full URL>" | null,
|
|
20
|
+
// verdict: "RESOLVED" | "CANNOT-CONFIRM",
|
|
21
|
+
// reasons: [...] }
|
|
22
|
+
// Exit is always 0 on parseable bodies; verdict carries the decision.
|
|
23
|
+
|
|
24
|
+
import { readFileSync } from 'node:fs';
|
|
25
|
+
|
|
26
|
+
const [rootPath] = process.argv.slice(2);
|
|
27
|
+
if (!rootPath) {
|
|
28
|
+
process.stderr.write('usage: node resolve-target-user.mjs <api-root.json>\n');
|
|
29
|
+
process.exit(2);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function fail(reasons) {
|
|
33
|
+
process.stdout.write(JSON.stringify({
|
|
34
|
+
userId: null, identity: null, verdict: 'CANNOT-CONFIRM', reasons,
|
|
35
|
+
}, null, 2) + '\n');
|
|
36
|
+
process.exit(0);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
let text;
|
|
40
|
+
try {
|
|
41
|
+
text = readFileSync(rootPath, 'utf8').trim();
|
|
42
|
+
} catch (e) {
|
|
43
|
+
fail([`unreadable file at ${rootPath}: ${e?.message ?? e}`]);
|
|
44
|
+
}
|
|
45
|
+
if (!text) fail([`empty file: ${rootPath}`]);
|
|
46
|
+
|
|
47
|
+
let data;
|
|
48
|
+
try {
|
|
49
|
+
data = JSON.parse(text);
|
|
50
|
+
} catch (e) {
|
|
51
|
+
fail([`invalid JSON at ${rootPath}: ${e?.message ?? e}`]);
|
|
52
|
+
}
|
|
53
|
+
if (!data || typeof data !== 'object') fail([`non-object JSON at ${rootPath}`]);
|
|
54
|
+
if (typeof data.status === 'number' && data.status !== 0) {
|
|
55
|
+
fail([`sf api request at ${rootPath} failed with status ${data.status}`]);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// `sf api request rest` returns the raw body directly; the API root response
|
|
59
|
+
// contains `identity`, `rest`, and version fields at the top level.
|
|
60
|
+
const identity = typeof data.identity === 'string'
|
|
61
|
+
? data.identity
|
|
62
|
+
: (typeof data.result?.identity === 'string' ? data.result.identity : null);
|
|
63
|
+
|
|
64
|
+
if (!identity) {
|
|
65
|
+
fail(['response body has no `identity` field — cannot resolve the running user without it. Confirm the org is reachable and re-run `sf api request rest "/services/data/v67.0/"`.']);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const segments = identity.split('/').filter(Boolean);
|
|
69
|
+
const last = segments[segments.length - 1] ?? '';
|
|
70
|
+
|
|
71
|
+
// Salesforce user Ids: 15-char case-sensitive or 18-char case-insensitive, prefix `005`.
|
|
72
|
+
if (!/^005[A-Za-z0-9]{12}([A-Za-z0-9]{3})?$/.test(last)) {
|
|
73
|
+
fail([
|
|
74
|
+
`identity URL trailing segment "${last}" does not match the expected user-Id shape (005 + 12 or 15 alphanum chars).`,
|
|
75
|
+
`full identity URL: ${identity}`,
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
process.stdout.write(JSON.stringify({
|
|
80
|
+
userId: last,
|
|
81
|
+
identity,
|
|
82
|
+
verdict: 'RESOLVED',
|
|
83
|
+
reasons: [
|
|
84
|
+
`Extracted running-user Id "${last}" from identity URL trailing path segment.`,
|
|
85
|
+
],
|
|
86
|
+
}, null, 2) + '\n');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: service-itsm-agentic-setup-agentforce-coordinate
|
|
3
|
-
description: "Orchestrator for setting up Agentforce in Salesforce Service Cloud ITSM — Agentforce Studio enablement, the IT Service Fulfiller agent,
|
|
3
|
+
description: "Orchestrator for setting up Agentforce in Salesforce Service Cloud ITSM — Agentforce Studio enablement, the IT Service Fulfiller agent, the IT Service Employee agent, and specialized employee agents. Use when the user asks to set up Agentforce for ITSM, enable Studio and the Fulfiller/Employee agents together, wants a guided Agentforce ITSM walkthrough, or asks what Agentforce features are available for IT Service. Presents available Agentforce capabilities and delegates each selection to a specialized child skill while tracking progress. Triggers on: set up agentforce for itsm, configure agentforce studio and fulfiller, agentforce itsm walkthrough, what agentforce features for it service. DO NOT TRIGGER when: the user asks to enable Agentforce Studio alone, asks to create or activate the Fulfiller or Employee agent alone, or asks about CMDB, Incident Management, Teams, or general ITSM setup without Agentforce intent."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "1.
|
|
5
|
+
version: "1.7"
|
|
6
6
|
domains: ["Service", "Agentforce"]
|
|
7
7
|
relatedSkills:
|
|
8
8
|
- "service-itsm-agentic-setup-agentforce-studio-configure"
|
|
@@ -20,7 +20,7 @@ allowed-tools: Read Bash Write AskUserQuestion
|
|
|
20
20
|
|
|
21
21
|
# Agentforce for ITSM Setup Orchestrator
|
|
22
22
|
|
|
23
|
-
Guide the user through setting up Agentforce Studio, the IT Service Fulfiller agent,
|
|
23
|
+
Guide the user through setting up Agentforce Studio, the IT Service Fulfiller agent, the IT Service Employee agent, and specialized employee agents in Salesforce Service Cloud ITSM by presenting the available capabilities, delegating to specialized child skills, and tracking progress.
|
|
24
24
|
|
|
25
25
|
## Goal
|
|
26
26
|
|
|
@@ -52,21 +52,37 @@ activate agent templates** (the Fulfiller and Employee agents). This separation
|
|
|
52
52
|
Stage 1 *enables* org-level platform toggles/preferences, while Stage 2 *installs and activates*
|
|
53
53
|
agents from a template — they are distinct kinds of action and must read as distinct stages, not one
|
|
54
54
|
undifferentiated list. Only features with a working child skill appear in the menu — use the
|
|
55
|
-
**Feature menu** template in `examples/output-templates.md`. Collect the user's selections through a single multi-select prompt (use `AskUserQuestion` with `multiSelect: true` when tooling permits, otherwise ask the user to reply with a list of numbers such as `1, 2`). Use the **exact Item names from the Feature menu table** as the multi-select option labels — verbatim, including each item's parenthetical note and the word "Agent" and its capitalization (`Agentforce Studio enablement (Foundation for
|
|
55
|
+
**Feature menu** template in `examples/output-templates.md`. Collect the user's selections through a single multi-select prompt (use `AskUserQuestion` with `multiSelect: true` when tooling permits, otherwise ask the user to reply with a list of numbers such as `1, 2`). Use the **exact Item names from the Feature menu table** as the multi-select option labels — verbatim, including each item's parenthetical note and the word "Agent" and its capitalization (`Agentforce Studio enablement (Foundation for all agents)`, `IT Service Fulfiller Agent`, `IT Service Employee Agent`, `Specialized Agents for Employee`) — so the picker options and the table never diverge. Each item's **Description column matches the wording on the Salesforce Setup → Agentforce for IT Service page** (the Fulfiller and Employee agent-template descriptions and the Specialized Agents for Employee text are used verbatim) so a user evaluating which template to install reads the same purpose/scope here as they would in Setup — do not paraphrase or shorten that product copy. For the three Stage 2 agent items, follow the verbatim product copy with one short trailing `Setup:` line stating what installing does (`Setup: creates the agent from this template and activates a version.` for the Fulfiller and Employee agents; `Setup: pick one specialized template (e.g. Password Manager, Onboarding), then create and activate that standalone agent. Re-run this item to add more.` for Specialized Agents for Employee, for which you first ask the user which specialized template they want and pass that name to the child skill) so a single row carries purpose, scope, and the install action together. The Stage 1 row (Agentforce Studio enablement) is a platform-enablement toggle, not a template install, so it carries no `Setup:` line. When raising `AskUserQuestion`, put that same Description text (product copy + the `Setup:` line) in each option's `description` field so the picker carries the detail too. Do NOT show placeholder features that cannot be executed.
|
|
56
56
|
|
|
57
57
|
**Report file (harness / non-interactive runs).** If a `${outputDir}` is provided (via the harness's generated-file location directive), write the menu emission (attribution header + feature table with status + delegation targets + dependency signal + the multi-select prompt itself) to `${outputDir}/report.md` **before** raising `AskUserQuestion` — so the report file always exists even when the harness parks at the confirmation gate. Overwrite the same file after each feature completes with the updated status table. Skip these writes when running interactively for a user in a chat surface — write only when `${outputDir}` was passed as an explicit destination.
|
|
58
58
|
|
|
59
59
|
### 4. Delegate to child skills in dependency order
|
|
60
60
|
|
|
61
|
-
**Studio-first rule (unconditional).** If Agentforce Studio enablement (#1) is in the user's selection and not already done, run it **first**, always — regardless of the order the user listed their numbers in.
|
|
62
|
-
|
|
63
|
-
**User-order rule (
|
|
64
|
-
|
|
65
|
-
| # | Feature | Child Skill |
|
|
66
|
-
|
|
67
|
-
| 1 | Agentforce Studio enablement (Foundation for
|
|
68
|
-
| 2 | IT Service Fulfiller Agent | `service-itsm-agentic-setup-fulfiller-agent-configure` |
|
|
69
|
-
| 3 | IT Service Employee Agent | `service-itsm-agentic-setup-employee-agent-configure` |
|
|
61
|
+
**Studio-first rule (unconditional).** If Agentforce Studio enablement (#1) is in the user's selection and not already done, run it **first**, always — regardless of the order the user listed their numbers in. The Fulfiller Agent (#2), Employee Agent (#3), and Specialized Agents for Employee (#4) all depend on Studio being enabled and will fail if attempted first. Reorder the queue silently so Studio runs before any agent. This rule is non-negotiable and applies whether the user selected two features (Studio + one agent) or everything.
|
|
62
|
+
|
|
63
|
+
**User-order rule (among #2, #3, and #4 only).** The Fulfiller Agent (#2), Employee Agent (#3), and Specialized Agents for Employee (#4) are independent of each other — none depends on the others. If more than one is selected, run them in the order the user listed them (default 2 → 3 → 4 when unspecified). This rule applies **only** to the ordering among #2, #3, and #4; it never overrides the Studio-first rule above.
|
|
64
|
+
|
|
65
|
+
| # | Feature | Stage | Child Skill |
|
|
66
|
+
|---|---------|-------|-------------|
|
|
67
|
+
| 1 | Agentforce Studio enablement (Foundation for all agents) | 1 | `service-itsm-agentic-setup-agentforce-studio-configure` |
|
|
68
|
+
| 2 | IT Service Fulfiller Agent | 2 | `service-itsm-agentic-setup-fulfiller-agent-configure` |
|
|
69
|
+
| 3 | IT Service Employee Agent | 2 | `service-itsm-agentic-setup-employee-agent-configure` |
|
|
70
|
+
| 4 | Specialized Agents for Employee | 2 | `service-itsm-agentic-setup-employee-agent-configure` |
|
|
71
|
+
|
|
72
|
+
**How #3 and #4 relate.** Both #3 and #4 delegate to the same child skill,
|
|
73
|
+
`service-itsm-agentic-setup-employee-agent-configure` — the difference is which template it installs.
|
|
74
|
+
#3 (IT Service Employee Agent) installs the **broad, ready-to-go** employee agent, which is the child
|
|
75
|
+
skill's default whenever no specialization is named. #4 (Specialized Agents for Employee) installs a
|
|
76
|
+
**specialized** employee agent instead — but the child skill only takes the specialized path when it
|
|
77
|
+
is handed the name of a specialized template; handed nothing, it silently falls back to the broad
|
|
78
|
+
agent, which would just re-create #3. So when the user selects #4, **ask which specialized employee
|
|
79
|
+
agent they want before delegating** — offer common examples (Password Manager, Certificate Management,
|
|
80
|
+
Onboarding, Hardware Request) and note that more are available; the child skill holds the full catalog
|
|
81
|
+
and will disambiguate a partial or ambiguous name. Then delegate to the child skill **with that named
|
|
82
|
+
specialization**, and it will pin the matching template (the chosen template names the agent it
|
|
83
|
+
creates). **Never delegate #4 without a named specialization** — that is the one case that produces a
|
|
84
|
+
duplicate broad agent. The specialized templates themselves are turned on in Stage 1 (Agentforce
|
|
85
|
+
Studio enablement); #4 is where an agent is built and activated from one of them.
|
|
70
86
|
|
|
71
87
|
`service-itsm-agentic-setup-agentforce-studio-configure` performs its own read-and-classify
|
|
72
88
|
preflight (reading live toggle state before writing) rather than delegating to
|
|
@@ -104,19 +120,22 @@ Stage 2 (install & activate agent templates).
|
|
|
104
120
|
|
|
105
121
|
```text
|
|
106
122
|
Stage 1 — Foundation: enable platform features
|
|
107
|
-
1. Agentforce Studio enablement (Foundation for
|
|
123
|
+
1. Agentforce Studio enablement (Foundation for all agents) (turn ON org-level Agentforce + Einstein GenAI feature toggles)
|
|
108
124
|
|
|
109
125
|
Stage 2 — Agent templates: install & activate (only after Stage 1)
|
|
110
|
-
2. IT Service Fulfiller Agent
|
|
111
|
-
3. IT Service Employee Agent
|
|
126
|
+
2. IT Service Fulfiller Agent (install from template, commit, and activate the agent)
|
|
127
|
+
3. IT Service Employee Agent (install the broad employee agent from its template and activate it)
|
|
128
|
+
4. Specialized Agents for Employee (install a specialized employee agent — user picks the template — and activate it)
|
|
112
129
|
```
|
|
113
130
|
|
|
114
131
|
Stage 1 (Agentforce Studio enablement) is the **foundation**: it turns on the org-level Agentforce
|
|
115
|
-
and Einstein GenAI feature toggles that
|
|
116
|
-
|
|
117
|
-
enabled will fail. The
|
|
118
|
-
|
|
119
|
-
done.
|
|
132
|
+
and Einstein GenAI feature toggles that all the agents are **built on top of** (including the
|
|
133
|
+
specialized employee templates). Enable it first — attempting to install or activate any agent
|
|
134
|
+
before this foundation is enabled will fail. The three Stage 2 items (Fulfiller, Employee, and
|
|
135
|
+
Specialized Agents for Employee) are independent siblings (none depends on the others) — they can be
|
|
136
|
+
selected together and installed in any order once Stage 1 is done. Specialized Agents for Employee
|
|
137
|
+
is listed right after the IT Service Employee Agent because both build employee agents from the same
|
|
138
|
+
child skill: #3 the broad default, #4 a specialized template the user chooses.
|
|
120
139
|
|
|
121
140
|
---
|
|
122
141
|
|
|
@@ -129,6 +148,7 @@ done.
|
|
|
129
148
|
- NEVER show features that do not have a working child skill
|
|
130
149
|
- If the user says "set up everything" or "all", walk through each available feature sequentially in the recommended order, confirming between each step
|
|
131
150
|
- Track progress across the conversation — do not re-present completed features as "Not done"
|
|
151
|
+
- Specialized Agents for Employee (#4) is **re-selectable** — each run builds a *different* specialized employee agent from a template the user picks. Mark the agent just built as `Done`, but keep #4 available to run again for additional specialized agents; do not treat a completed #4 as permanently finished the way #1–#3 are. If the user picks #4 again, ask which specialized template to use next
|
|
132
152
|
- NEVER advance to the next feature in the queue if the current one failed or only partially
|
|
133
153
|
succeeded — stop and surface the failure in plain language instead
|
|
134
154
|
- If Agentforce Studio enablement reports the org lacks the Agentforce license (`accessCheck`), STOP
|
|
@@ -154,10 +174,11 @@ Before emitting any menu or summary in this skill, mentally confirm each of the
|
|
|
154
174
|
- [ ] Only features with a working child skill are shown; placeholder features are hidden
|
|
155
175
|
- [ ] The feature menu is presented as a multi-select (single-select only if the user has already named a specific feature)
|
|
156
176
|
- [ ] Each feature row's `Status` column reflects the actual tracked state from the conversation (`Not done`, `In progress`, or `Done`) — not a hard-coded default
|
|
157
|
-
- [ ] Each feature row's `Description` matches the Salesforce Setup → Agentforce for IT Service page wording (Fulfiller and Employee agent-template descriptions verbatim, not paraphrased), the
|
|
177
|
+
- [ ] Each feature row's `Description` matches the Salesforce Setup → Agentforce for IT Service page wording (Fulfiller and Employee agent-template descriptions verbatim, not paraphrased), the three Stage 2 rows each end with a short `Setup:` install line, and the `AskUserQuestion` option descriptions carry the same text
|
|
178
|
+
- [ ] The Specialized Agents for Employee row is present as a Stage 2 item shown right after the IT Service Employee Agent, and #4 is never delegated to `service-itsm-agentic-setup-employee-agent-configure` without first asking the user which specialized template they want (handed no name, the child skill defaults to the broad agent and duplicates #3), and it carries its `Setup:` install line
|
|
158
179
|
- [ ] For a completion summary, the header line and closing line are chosen by the rubric in `examples/output-templates.md` (all `Done` → *Complete*; any `Not done`/`In progress` → *Finished*)
|
|
159
180
|
- [ ] A feature is being configured only because the user explicitly selected it (or is being walked through sequentially with confirmation under an "all" / "everything" request)
|
|
160
|
-
- [ ] Studio enablement is verified done before delegating to
|
|
181
|
+
- [ ] Studio enablement is verified done before delegating to any Stage 2 agent (Fulfiller, Employee, or Specialized Agents for Employee)
|
|
161
182
|
- [ ] The next action delegates to a child skill, never configures a feature inline
|
|
162
183
|
- [ ] No Salesforce record IDs appear in the output — human-readable names only
|
|
163
184
|
|
package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md
CHANGED
|
@@ -16,7 +16,7 @@ Stage 1 (enable) must finish before Stage 2 (install & activate):
|
|
|
16
16
|
│ # │ Stage │ Item │ Description │ Status │
|
|
17
17
|
├───┼─────────┼──────────────────────────────┼────────────────────────────────────────────────────────┼──────────┤
|
|
18
18
|
│ 1 │ Stage 1 │ Agentforce Studio enablement │ Turn on org-level Agentforce, Einstein GenAI, and IT │ Not done │
|
|
19
|
-
│ │ │ (Foundation for
|
|
19
|
+
│ │ │ (Foundation for all agents) │ Service agent features │ │
|
|
20
20
|
│ 2 │ Stage 2 │ IT Service Fulfiller Agent │ Automate actions and simplify critical asks for IT │ Not done │
|
|
21
21
|
│ │ │ │ service fulfillers who work with incidents, problems, │ │
|
|
22
22
|
│ │ │ │ change requests and more to resolve issues and │ │
|
|
@@ -27,6 +27,12 @@ Stage 1 (enable) must finish before Stage 2 (install & activate):
|
|
|
27
27
|
│ │ │ │ service requests, and track their incidents with ease. │ │
|
|
28
28
|
│ │ │ │ Setup: creates the agent from this template and │ │
|
|
29
29
|
│ │ │ │ activates a version. │ │
|
|
30
|
+
│ 4 │ Stage 2 │ Specialized Agents │ Use the specialized templates and build agents that │ Not done │
|
|
31
|
+
│ │ │ for Employee │ power your employee agent. Refine the agent logic, as │ │
|
|
32
|
+
│ │ │ │ necessary, and then activate them. │ │
|
|
33
|
+
│ │ │ │ Setup: pick one specialized template (e.g. Password │ │
|
|
34
|
+
│ │ │ │ Manager, Onboarding), then create and activate that │ │
|
|
35
|
+
│ │ │ │ standalone agent. Re-run this item to add more. │ │
|
|
30
36
|
└───┴─────────┴──────────────────────────────┴────────────────────────────────────────────────────────┴──────────┘
|
|
31
37
|
|
|
32
38
|
Reply with the numbers of the features you want to set up (one or more, e.g. `1` or `1, 2`).
|
|
@@ -34,8 +40,20 @@ If you pick a Stage 2 template without Stage 1, I'll enable the Stage 1 foundati
|
|
|
34
40
|
```
|
|
35
41
|
|
|
36
42
|
Stage 1 (Agentforce Studio enablement) is the **foundation** — it enables the org-level platform
|
|
37
|
-
features
|
|
38
|
-
from a template and activated**; they can be set up
|
|
43
|
+
features every agent is built on. Stage 2 items (the Fulfiller agent, the Employee agent, and
|
|
44
|
+
Specialized Agents for Employee) are **installed from a template and activated**; they can be set up
|
|
45
|
+
in any order once Stage 1 is done.
|
|
46
|
+
|
|
47
|
+
**Specialized Agents for Employee** is a third Stage 2 item, shown right after the IT Service
|
|
48
|
+
Employee Agent to keep the two employee options together. Both use the same child skill
|
|
49
|
+
(`service-itsm-agentic-setup-employee-agent-configure`): the IT Service Employee Agent installs the
|
|
50
|
+
broad, ready-to-go employee agent, while Specialized Agents for Employee starts from one of the
|
|
51
|
+
specialized employee templates (for example Password Manager, Certificate Management, Onboarding, or
|
|
52
|
+
Hardware Request). Ask which specialized template the user wants **before** delegating this item —
|
|
53
|
+
the child skill defaults to the broad agent when handed no name (which would just re-create the IT
|
|
54
|
+
Service Employee Agent), and once given a name it disambiguates a partial or ambiguous match. The
|
|
55
|
+
chosen template names the agent it creates. The specialized templates themselves are turned on in
|
|
56
|
+
Stage 1; this item is where you build and activate an agent from them.
|
|
39
57
|
|
|
40
58
|
## Post-feature progress (Behavior step 5)
|
|
41
59
|
|
|
@@ -49,16 +67,20 @@ Agentforce Studio — enabled successfully
|
|
|
49
67
|
│ # │ Stage │ Item │ Status │
|
|
50
68
|
├───┼─────────┼──────────────────────────────┼─────────────┤
|
|
51
69
|
│ 1 │ Stage 1 │ Agentforce Studio enablement │ Done │
|
|
52
|
-
│ │ │ (Foundation for
|
|
70
|
+
│ │ │ (Foundation for all agents) │ │
|
|
53
71
|
│ 2 │ Stage 2 │ IT Service Fulfiller Agent │ Not done │
|
|
54
72
|
│ 3 │ Stage 2 │ IT Service Employee Agent │ Not done │
|
|
73
|
+
│ 4 │ Stage 2 │ Specialized Agents │ Not done │
|
|
74
|
+
│ │ │ for Employee │ │
|
|
55
75
|
└───┴─────────┴──────────────────────────────┴─────────────┘
|
|
56
76
|
|
|
57
77
|
Stage 1 (foundation) is enabled. On to Stage 2 — install and activate the IT
|
|
58
|
-
Service Fulfiller
|
|
59
|
-
agent
|
|
60
|
-
|
|
61
|
-
own requests
|
|
78
|
+
Service Fulfiller agent, the IT Service Employee agent, and/or a specialized
|
|
79
|
+
employee agent from their templates. The Fulfiller agent gives IT technicians an
|
|
80
|
+
assistant for triage, case summaries, and record automations; the Employee agent
|
|
81
|
+
gives requesters self-service help with their own requests; and Specialized
|
|
82
|
+
Agents for Employee builds a focused employee agent (such as Password Manager or
|
|
83
|
+
Onboarding) from a specialized template you pick.
|
|
62
84
|
```
|
|
63
85
|
|
|
64
86
|
## Completion summary (Behavior step 6)
|
|
@@ -85,9 +107,11 @@ Agentforce for ITSM Setup — Finished
|
|
|
85
107
|
│ # │ Stage │ Item │ Status │
|
|
86
108
|
├───┼─────────┼──────────────────────────────┼─────────────┤
|
|
87
109
|
│ 1 │ Stage 1 │ Agentforce Studio enablement │ Done │
|
|
88
|
-
│ │ │ (Foundation for
|
|
110
|
+
│ │ │ (Foundation for all agents) │ │
|
|
89
111
|
│ 2 │ Stage 2 │ IT Service Fulfiller Agent │ Not done │
|
|
90
112
|
│ 3 │ Stage 2 │ IT Service Employee Agent │ Not done │
|
|
113
|
+
│ 4 │ Stage 2 │ Specialized Agents │ Not done │
|
|
114
|
+
│ │ │ for Employee │ │
|
|
91
115
|
└───┴─────────┴──────────────────────────────┴─────────────┘
|
|
92
116
|
|
|
93
117
|
You have finished the items you selected. The remaining items can be
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: service-itsm-agentic-setup-agentforce-studio-configure
|
|
3
3
|
description: "Enable the Agentforce for IT Service Salesforce Go feature toggles (Agentforce Studio, Einstein Generative AI, the parent umbrella, and the Fulfiller/Employee agent templates) using the Salesforce CLI (sf). Turns ON org prefs via the Setup Discovery feature/{apiName}/enable Connect API route. Write-capable, idempotent, dependency-ordered, confirm-to-write required. Use when asked to enable Agentforce Studio, turn on Agentforce for IT Service, enable Einstein generative AI, or configure the org-level Agentforce for IT Service prerequisites. Triggers: enable agentforce studio, turn on agentforce for it service, enable einstein generative ai, configure agentforce org prefs. DO NOT TRIGGER: read-only prerequisite check (service-itsm-agentic-setup-agentforce-studio-validate), create/activate an agent (service-itsm-agentic-setup-fulfiller-agent-configure), or assigning permission sets."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "1.
|
|
5
|
+
version: "1.4"
|
|
6
6
|
domains: ["Service", "Agentforce"]
|
|
7
7
|
minApiVersion: "67.0"
|
|
8
8
|
relatedSkills:
|
|
@@ -239,31 +239,30 @@ Substitute `<alias>` with the target org alias. `<agentType>` is `fulfiller` or
|
|
|
239
239
|
|
|
240
240
|
## Output Format
|
|
241
241
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
ENABLED / ALREADY-ENABLED / FAILED / CANNOT-CONFIRM
|
|
242
|
+
Emit the report as **live Markdown — never inside a code fence** (a fenced table shows raw
|
|
243
|
+
`|` pipes, not a table). This is **Stage 1 (Foundation)** that Stage 2 (install & activate the
|
|
244
|
+
agent) builds on; each Status is ENABLED / ALREADY-ENABLED / FAILED / CANNOT-CONFIRM. Lay it
|
|
245
|
+
out exactly like this:
|
|
245
246
|
|
|
246
|
-
|
|
247
|
-
Agentforce for IT Service — Stage 1: Enable Platform Features (via service-itsm-agentic-setup-agentforce-studio-configure)
|
|
247
|
+
**Agentforce for IT Service — Stage 1: Enable Platform Features** (via `service-itsm-agentic-setup-agentforce-studio-configure`)
|
|
248
248
|
|
|
249
|
-
Org
|
|
250
|
-
Agent path
|
|
249
|
+
- **Org:** `<org-alias>` (API v67.0)
|
|
250
|
+
- **Agent path:** fulfiller | employee
|
|
251
251
|
|
|
252
252
|
| # | Platform feature | Status |
|
|
253
253
|
| --- | --- | --- |
|
|
254
|
-
| 1 | Einstein Generative AI |
|
|
255
|
-
| 2 | Agentforce Studio |
|
|
256
|
-
| 3 | Agentforce for IT Service |
|
|
257
|
-
| 4 |
|
|
254
|
+
| 1 | Einstein Generative AI | `<status>` |
|
|
255
|
+
| 2 | Agentforce Studio | `<status>` |
|
|
256
|
+
| 3 | Agentforce for IT Service | `<status>` |
|
|
257
|
+
| 4 | `<path-specific toggle(s)>` | `<status>` |
|
|
258
258
|
|
|
259
|
-
Verdict
|
|
259
|
+
**Verdict:** SUCCESS | PARTIAL | FAILED | CANNOT-CONFIRM | ERROR
|
|
260
260
|
|
|
261
|
-
Next steps
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
```
|
|
261
|
+
**Next steps:**
|
|
262
|
+
- If SUCCESS: "Stage 1 (foundation) complete — proceed to Stage 2: install + activate the `<path>` agent via `service-itsm-agentic-setup-fulfiller-agent-configure` (fulfiller) / the employee-agent skill."
|
|
263
|
+
- If PARTIAL/FAILED/CANNOT-CONFIRM/ERROR: list the affected toggle(s) + reason (`enableBlockedReasons`, unconfirmed status, or read error) + remediation steps
|
|
265
264
|
|
|
266
|
-
|
|
265
|
+
Substitute `overall` and each feature's `finalStatus` from `scripts/classify-final-report.mjs` into the `<status>` cells verbatim — do not recompute. No files are produced beyond the classifiers' temporary response captures.
|
|
267
266
|
|
|
268
267
|
Label rows exactly as the classifier emits them — never add `Requestor`, `Specialized`, or `parent`.
|
|
269
268
|
|
|
@@ -61,6 +61,8 @@ Before presenting options, scan chat history for:
|
|
|
61
61
|
- Which layers are already done (skip or mark as done)
|
|
62
62
|
- Any constraints the user mentioned (e.g. "just enable it, we'll assign users later")
|
|
63
63
|
|
|
64
|
+
Derive layer status from the **most recent** layer activity in the transcript. On a long or **resumed** conversation (e.g. a headless session continued later), do not treat an earlier-highlighted layer as still current — re-derive which layer is active from the latest child-skill result, and if it is ambiguous, re-confirm with the user before re-presenting the menu.
|
|
65
|
+
|
|
64
66
|
### 2. Confirm the target org
|
|
65
67
|
|
|
66
68
|
CMDB enablement performs **writes against a real org** (tenant provisioning, feature enable,
|
|
@@ -179,7 +181,7 @@ cannot succeed until Layer 1 reaches `PROVISIONED`. Present them as one step.
|
|
|
179
181
|
license/edition prerequisite that no API can grant
|
|
180
182
|
- If a child skill reports a prerequisite gap or a failure, relay it to the user in friendly,
|
|
181
183
|
actionable terms — do not bury the error
|
|
182
|
-
- Track progress across the conversation — do not re-present completed layers as "Pending"
|
|
184
|
+
- Track progress across the conversation — do not re-present completed layers as "Pending". Re-derive the current layer from the latest child-skill activity, not from a previously rendered highlight; on a resumed or long conversation, do not assume the last-highlighted layer is still current — if ambiguous, re-confirm with the user
|
|
183
185
|
- Do NOT expose internal technical jargon in user-facing output. This includes Salesforce record
|
|
184
186
|
IDs and org IDs, raw HTTP status codes (403, 500, …), API error codes (`FUNCTIONALITY_NOT_ENABLED`,
|
|
185
187
|
`DUPLICATE_VALUE`, …), internal endpoint/API names (`bundleListView`, `tenantProvisioningStatus`, …),
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: service-itsm-agentic-setup-configure
|
|
3
|
-
description: "Top-level orchestrator for setting up IT Service Management (ITSM) in Salesforce Service Cloud. Use when the user asks to set up ITSM, configure service management,
|
|
3
|
+
description: "Top-level orchestrator for setting up IT Service Management (ITSM) in Salesforce Service Cloud. Use when the user asks to set up ITSM, configure service management, wants a guided walkthrough, or asks what is needed to get ITSM running. Presents a paged multi-select track menu and delegates to domain sub-orchestrators — Incident Management, Agentforce for ITSM, CMDB, Channels (Portal, Notifications, Microsoft Teams, Slack), and Unified Catalog (find and deploy Service Process templates). Prerequisites (e.g., the Incident Management master switch) are owned inside the relevant sub-orchestrator, not at this level. Triggers on: set up ITSM, configure service management, ITSM setup, get ITSM running, set up CMDB / channels / Teams / Slack / Agentforce for ITSM / Unified Catalog templates. DO NOT TRIGGER when: the user asks about a specific feature directly (e.g., the priority matrix alone), asks only about Case management, wants to create a single user, or asks general ITSM questions without setup intent."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "1.
|
|
5
|
+
version: "1.6"
|
|
6
6
|
domains: ["Service"]
|
|
7
7
|
relatedSkills:
|
|
8
|
+
- "service-catalog-template-coordinate"
|
|
8
9
|
- "service-itsm-agentic-setup-agentforce-coordinate"
|
|
9
10
|
- "service-itsm-agentic-setup-cmdb-coordinate"
|
|
10
11
|
- "service-itsm-agentic-setup-incident-management"
|
|
@@ -32,6 +33,7 @@ Only tracks with a working sub-orchestrator appear in the menu — use the **Tra
|
|
|
32
33
|
| 2 | Agentforce for ITSM | `service-itsm-agentic-setup-agentforce-coordinate` | Agentforce Studio enablement, Fulfiller Agent, Employee Agent |
|
|
33
34
|
| 3 | CMDB (Configuration Management Database) | `service-itsm-agentic-setup-cmdb-coordinate` | CMDB feature enablement, CMDB Foundation bundle, User CMDB access |
|
|
34
35
|
| 4 | Channels | `service-itsm-channels-coordinate` | Employee Service channel setup — Portal, Notifications, Microsoft Teams (IT Desk / IT Service / embedded agent), and Slack |
|
|
36
|
+
| 5 | Unified Catalog | `service-catalog-template-coordinate` | Find and deploy Unified Catalog Service Process templates (search / rank, then install / activate) |
|
|
35
37
|
|
|
36
38
|
Additional ITSM setup tracks (e.g. employee provisioning) will be added here as their sub-orchestrators become available.
|
|
37
39
|
|
|
@@ -47,11 +49,15 @@ Before presenting tracks, scan chat history for:
|
|
|
47
49
|
- The target org (if mentioned)
|
|
48
50
|
- Any specific features mentioned that narrow the scope
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
Derive each track's status from the **most recent** sub-orchestrator activity in the transcript, not from the last-rendered menu — a track is only the "active" one if it is the latest track actually being worked. On a long or **resumed** conversation (e.g. a headless session continued later), the earlier transcript can still prominently show a prior track: do not treat the last highlighted row as current. If it is ambiguous which track is active, re-confirm with the user (`AskUserQuestion`) before rendering the menu rather than carrying a stale highlight forward.
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
### 2. Present the available tracks as a paged multi-select
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
Emit the **Track menu** table from `examples/output-templates.md` (visual map — every available track and `Full guided setup`). In the SAME response, dispatch the first page of a multi-select `AskUserQuestion`. `Full guided setup` is a first-class pickable option in the same multi-select — not a separate mode selector. The user picks any combination of tracks in one flow.
|
|
57
|
+
|
|
58
|
+
**`AskUserQuestion` accepts at most 4 options per call.** With today's 5 tracks + `Full guided setup` = 6 options, the menu is paged. Each page has up to **3 tracks (or `Full guided setup` + 2 tracks on page 1) + `Show more tracks →` as the 4th option** when more content follows. Selections **accumulate across pages** — a pick on page 1 stays picked when the user moves to page 2. Stop paging when the user submits a page without `Show more tracks →`, or the last page has been dispatched (no `Show more tracks →` sentinel needed on the last page). Strip `Show more tracks →` from the final accumulated selection before delegating.
|
|
59
|
+
|
|
60
|
+
**Selection resolution.** If the accumulated set contains `Full guided setup`, run every available track in dependency order (per-track confirmation from step 3 still applies — the user can stop between any two tracks). Otherwise, run only the picked tracks, in dependency order (or track number order if unspecified).
|
|
55
61
|
|
|
56
62
|
Do NOT run any org-level prerequisites at this level — each sub-orchestrator owns its own prerequisites (e.g., the Incident Management sub-orchestrator handles the master-switch confirmation internally). Delegating without pre-checking keeps this orchestrator agnostic about domain-specific dependencies and avoids prompting the user to change org state for a track they did not select.
|
|
57
63
|
|
|
@@ -79,13 +85,14 @@ When the user says they're finished (or every available track is `Done`), presen
|
|
|
79
85
|
## Rules
|
|
80
86
|
|
|
81
87
|
- ALWAYS show "(via service-itsm-agentic-setup-configure)" in the setup header
|
|
82
|
-
- ALWAYS present the track menu as a multi-select —
|
|
83
|
-
-
|
|
84
|
-
- ALWAYS
|
|
88
|
+
- ALWAYS present the track menu as a **paged multi-select** — a single `AskUserQuestion` per page with `multiSelect: true`. `Full guided setup` is a first-class option in the multi-select (page 1, first slot) — NEVER split it into a separate mode-selector stage. NEVER render more than 4 options in a single `AskUserQuestion` — the tool schema hard-caps `options` at 4 and the dispatch fails with an "invalid parameter" error before the user sees the menu
|
|
89
|
+
- WHEN the total options (tracks + `Full guided setup`) exceed 4, PAGE the menu. The algorithm is **scale-free** — more tracks produce more pages automatically without changing the shape: page 1 = `Full guided setup` + up to 2 tracks + `Show more tracks →` (4 slots); each middle page = up to 3 tracks + `Show more tracks →` (4 slots), repeated as many times as needed until ≤ 4 tracks remain; last page = the remaining ≤ 4 tracks with NO sentinel. Concrete page counts: 4 tracks → 2 pages, 7 tracks → 3 pages, 10 tracks → 4 pages (the count grows by one page for every ~3 new tracks). **Accumulate selections across pages** — a pick on page 1 stays picked when the user pages forward. Strip `Show more tracks →` from the final accumulated selection before delegating
|
|
90
|
+
- ALWAYS emit the ASCII table AND the page-1 `AskUserQuestion` in the same response — the table is the visual map (all tracks + `Full guided setup`); the multi-select is the selection channel. Emitting the table alone breaks the selection channel; emitting the multi-select alone hides the visual view
|
|
91
|
+
- WHEN the accumulated selection contains `Full guided setup`, expand to every available track in dependency order (step 3's per-track confirmation still runs so the user can stop between any two tracks). Otherwise, run only the picked tracks. `Full guided setup` picked alongside individual tracks means "run everything" — treat it as Full guided setup and ignore the per-track picks
|
|
85
92
|
- NEVER run domain-level prerequisites (such as the Incident Management master switch) at this level — each sub-orchestrator owns and runs its own prerequisites, so users who did not select the relevant track are never prompted for unrelated org-level changes
|
|
86
93
|
- NEVER show a track that has no working sub-orchestrator
|
|
87
94
|
- NEVER configure a feature directly — always delegate to the sub-orchestrator (delegating through the domain orchestrator ensures its menu, progress tracking, and per-feature confirmations are applied; configuring directly bypasses that state and leaves the setup inconsistent)
|
|
88
|
-
- Track progress across the conversation
|
|
95
|
+
- Track progress across the conversation — re-derive each track's status from the latest sub-orchestrator activity in the transcript, not from the previously rendered highlight. On a resumed or long conversation, do not assume the last-highlighted track is still current; if ambiguous, re-confirm the active track with the user before rendering the menu
|
|
89
96
|
- Do not show Salesforce record IDs in any output — use human-readable names only
|
|
90
97
|
- If the user asks about a specific feature directly (e.g., "set up the priority matrix", "just enable CMDB"), you may skip the Behavior step 2 track menu and delegate directly to the corresponding sub-orchestrator; the sub-orchestrator will handle its own prerequisites as needed
|
|
91
98
|
- If the user asks for a setup area that is not yet available (e.g. employee provisioning, major incident management), tell them it is not yet available in this orchestrator and will be added as its sub-orchestrator merges
|
|
@@ -98,9 +105,10 @@ Before emitting any menu or summary in this skill, mentally confirm each of the
|
|
|
98
105
|
|
|
99
106
|
- [ ] The header line ends with `(via service-itsm-agentic-setup-configure)`
|
|
100
107
|
- [ ] Only tracks with a working sub-orchestrator are shown; placeholder tracks are hidden
|
|
101
|
-
- [ ] The track menu
|
|
102
|
-
- [ ] The
|
|
103
|
-
- [ ]
|
|
108
|
+
- [ ] The track menu was emitted as a **single-stage paged multi-select** — `Full guided setup` is a first-class option in the multi-select (page 1, first slot), NOT a separate mode-selector stage
|
|
109
|
+
- [ ] The ASCII table AND the page-1 `AskUserQuestion` were emitted in the same response — never one without the other
|
|
110
|
+
- [ ] When total options (tracks + `Full guided setup`) > 4, pages followed the shape: page 1 = `Full guided setup` + up to 2 tracks + `Show more tracks →`; middle pages = up to 3 tracks + `Show more tracks →`; last page = remaining ≤ 4 tracks with no sentinel. Selections were accumulated across pages and `Show more tracks →` was stripped from the final selection
|
|
111
|
+
- [ ] If the accumulated selection contained `Full guided setup`, every available track was enqueued in dependency order with per-track confirmation between them (per-track picks were ignored when `Full guided setup` was included)
|
|
104
112
|
- [ ] Each track row's `Status` column reflects the actual tracked state from the conversation (`Not done`, `In progress`, or `Done`) — not a hard-coded default
|
|
105
113
|
- [ ] For a completion summary, the header line and closing line are chosen by the rubric in `examples/output-templates.md` (all `Done` → *Complete*; any `Not done`/`In progress` → *Finished*)
|
|
106
114
|
- [ ] No org-level prerequisites are being run at this level — the selected sub-orchestrator handles its own prerequisites
|
|
@@ -5,6 +5,14 @@ working sub-orchestrator appear.
|
|
|
5
5
|
|
|
6
6
|
## Track menu (Behavior step 2)
|
|
7
7
|
|
|
8
|
+
Emit the ASCII table first (visual map — every track and `Full guided setup` visible up
|
|
9
|
+
front), then dispatch a **single-stage paged multi-select** `AskUserQuestion`. `Full guided
|
|
10
|
+
setup` is a first-class pickable option in the same multi-select — NOT a separate mode
|
|
11
|
+
selector. `AskUserQuestion` accepts at most **4 options per call**, so when the total
|
|
12
|
+
(tracks + `Full guided setup`) > 4 the menu is paged.
|
|
13
|
+
|
|
14
|
+
### ASCII table (part of the response body)
|
|
15
|
+
|
|
8
16
|
```text
|
|
9
17
|
ITSM Setup (via service-itsm-agentic-setup-configure)
|
|
10
18
|
|
|
@@ -22,14 +30,73 @@ ITSM Setup (via service-itsm-agentic-setup-configure)
|
|
|
22
30
|
│ 4 │ Channels │ Set up Employee Service channels — Portal, │ Not done │
|
|
23
31
|
│ │ │ Notifications, Microsoft Teams (IT Desk / IT │ │
|
|
24
32
|
│ │ │ Service), and Slack │ │
|
|
25
|
-
│
|
|
26
|
-
│ │ │
|
|
27
|
-
│
|
|
33
|
+
│ 5 │ Unified Catalog │ Find and deploy Unified Catalog Service Process │ Not done │
|
|
34
|
+
│ │ │ templates (search / rank, then install / activate) │ │
|
|
35
|
+
│ A │ Full guided setup │ Run every available track in dependency order with a │ — │
|
|
36
|
+
│ │ │ per-track confirmation between them. Pickable in the │ │
|
|
37
|
+
│ │ │ same multi-select as the individual tracks. Wins if │ │
|
|
38
|
+
│ │ │ picked alongside individual tracks. │ │
|
|
28
39
|
└───┴──────────────────────────┴──────────────────────────────────────────────────────┴──────────┘
|
|
29
|
-
|
|
30
|
-
Reply with the numbers of the tracks you want to set up (one or more, e.g. `1` or `1, 3`), or `A` for the full guided setup.
|
|
31
40
|
```
|
|
32
41
|
|
|
42
|
+
### Paged multi-select `AskUserQuestion`
|
|
43
|
+
|
|
44
|
+
**Paging rule.** `AskUserQuestion` caps `options` at 4 per call.
|
|
45
|
+
|
|
46
|
+
- **Page 1** always leads with `Full guided setup` in slot 1 so it's visible immediately
|
|
47
|
+
without paging. If total options > 4, page 1 = `Full guided setup` + up to 2 tracks +
|
|
48
|
+
`Show more tracks →` (4 slots).
|
|
49
|
+
- **Middle pages** (only reached if more content follows after middle) = up to 3 tracks +
|
|
50
|
+
`Show more tracks →` (4 slots).
|
|
51
|
+
- **Last page** = the remaining ≤ 4 tracks with NO `Show more tracks →` sentinel — submitting
|
|
52
|
+
the last page ends the selection loop naturally.
|
|
53
|
+
- **Small case** (total options ≤ 4): a single page holds `Full guided setup` + all tracks
|
|
54
|
+
with no sentinel.
|
|
55
|
+
|
|
56
|
+
**Selection accumulation.** A track picked on page 1 stays picked when the user pages
|
|
57
|
+
forward — the skill maintains an accumulator across page dispatches. `Show more tracks →` is
|
|
58
|
+
stripped from the final selection before delegating.
|
|
59
|
+
|
|
60
|
+
**Selection resolution.** If the accumulated set contains `Full guided setup`, run every
|
|
61
|
+
available track in dependency order (per-track confirmation still runs so the user can stop
|
|
62
|
+
between any two tracks). Otherwise, run only the picked tracks in dependency order (or track
|
|
63
|
+
number order if unspecified). `Full guided setup` alongside individual tracks means "run
|
|
64
|
+
everything" — per-track picks are ignored.
|
|
65
|
+
|
|
66
|
+
### Scaling — how the page count grows with more tracks
|
|
67
|
+
|
|
68
|
+
The algorithm is scale-free: page 1 always fits `Full guided setup` + 2 tracks + `Show more
|
|
69
|
+
tracks →`, each middle page fits 3 tracks + `Show more tracks →`, and the last page fits
|
|
70
|
+
the remaining ≤ 4 tracks with no sentinel. So the page count grows by one page for every
|
|
71
|
+
~3 new tracks. Same shape at every scale — the skill does not need to change as new
|
|
72
|
+
sub-orchestrators land.
|
|
73
|
+
|
|
74
|
+
| Available tracks | Total options (incl. `Full guided setup`) | Pages | Shape |
|
|
75
|
+
|---|---|---|---|
|
|
76
|
+
| 3 | 4 | 1 (no paging) | `Full guided setup` + T1 + T2 + T3 |
|
|
77
|
+
| 4 | 5 | 2 | P1: `FGS` + T1 + T2 + `Show more →` · P2: T3 + T4 |
|
|
78
|
+
| 5 | 6 | 2 | P1: `FGS` + T1 + T2 + `Show more →` · P2: T3 + T4 + T5 |
|
|
79
|
+
| 7 | 8 | 3 | P1: `FGS` + T1 + T2 + `Show more →` · P2: T3 + T4 + T5 + `Show more →` · P3: T6 + T7 |
|
|
80
|
+
| 10 | 11 | 4 | P1: `FGS` + T1 + T2 + `Show more →` · P2: T3 + T4 + T5 + `Show more →` · P3: T6 + T7 + T8 + `Show more →` · P4: T9 + T10 |
|
|
81
|
+
|
|
82
|
+
### Today's 5 tracks (6 total with `Full guided setup`) — 2 pages
|
|
83
|
+
|
|
84
|
+
Page 1 (4 options):
|
|
85
|
+
|
|
86
|
+
- `Full guided setup`
|
|
87
|
+
- `Incident Management`
|
|
88
|
+
- `Agentforce for ITSM`
|
|
89
|
+
- `Show more tracks →`
|
|
90
|
+
|
|
91
|
+
Page 2 (fires only after `Show more tracks →` was picked on page 1; 3 options, no sentinel):
|
|
92
|
+
|
|
93
|
+
- `CMDB`
|
|
94
|
+
- `Channels`
|
|
95
|
+
- `Unified Catalog`
|
|
96
|
+
|
|
97
|
+
Never try to render >4 options in one `AskUserQuestion` — the tool schema hard-caps `options`
|
|
98
|
+
at 4 and the dispatch fails with an "invalid parameter" error before the user sees the menu.
|
|
99
|
+
|
|
33
100
|
## Completion summary (Behavior step 6)
|
|
34
101
|
|
|
35
102
|
The completion summary fires either (a) after every track completes, or (b) when the user says
|
|
@@ -57,6 +124,7 @@ ITSM Setup — Finished
|
|
|
57
124
|
│ Agentforce for ITSM │ Done │
|
|
58
125
|
│ CMDB │ Not done │
|
|
59
126
|
│ Channels │ Not done │
|
|
127
|
+
│ Unified Catalog │ Not done │
|
|
60
128
|
└──────────────────────────┴──────────┘
|
|
61
129
|
|
|
62
130
|
You have finished the tracks you selected. The remaining tracks can be resumed
|