@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.
Files changed (97) hide show
  1. package/package.json +1 -1
  2. package/skills/consumer-goods-rtr-datacloud-export-configure/SKILL.md +72 -0
  3. package/skills/consumer-goods-rtr-datacloud-export-configure/references/inputs-and-namespace.md +38 -0
  4. package/skills/consumer-goods-rtr-datacloud-export-configure/references/procedure.md +158 -0
  5. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/detect-namespace.js +86 -0
  6. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/render-apex.js +64 -0
  7. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/resolve-id-by-name.js +47 -0
  8. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/sf-rest.js +171 -0
  9. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/soql-escape.js +26 -0
  10. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/upsert-report-config.apex +51 -0
  11. package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/upsert-system-setting.apex +21 -0
  12. package/skills/consumer-goods-tpe-dashboard-configure/SKILL.md +74 -0
  13. package/skills/consumer-goods-tpe-dashboard-configure/references/phases-1-6.md +112 -0
  14. package/skills/consumer-goods-tpe-dashboard-configure/references/phases-7-12.md +157 -0
  15. package/skills/consumer-goods-tpe-dashboard-configure/scripts/find-failure-reason.js +132 -0
  16. package/skills/consumer-goods-tpe-dashboard-configure/scripts/poll-status.js +116 -0
  17. package/skills/consumer-goods-tpe-dashboard-configure/scripts/render-apex.js +64 -0
  18. package/skills/consumer-goods-tpe-dashboard-configure/scripts/run-data-transform.js +121 -0
  19. package/skills/consumer-goods-tpe-dashboard-configure/scripts/schedule-business-period-export.apex +27 -0
  20. package/skills/consumer-goods-tpe-dashboard-configure/scripts/sf-rest.js +171 -0
  21. package/skills/consumer-goods-tpe-dashboard-configure/scripts/soql-escape.js +25 -0
  22. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/SKILL.md +141 -0
  23. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/references/payload-shapes.md +447 -0
  24. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/references/procedure.md +263 -0
  25. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/scripts/clone-tpe-dashboards.js +537 -0
  26. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/scripts/sf-rest.js +195 -0
  27. package/skills/consumer-goods-tpe-datakit-deploy/SKILL.md +157 -0
  28. package/skills/consumer-goods-tpe-datakit-deploy/scripts/detect-namespace.js +86 -0
  29. package/skills/consumer-goods-tpe-datakit-deploy/scripts/download-static-resource.js +151 -0
  30. package/skills/consumer-goods-tpe-datakit-deploy/scripts/extract-crm-field-permissions.js +115 -0
  31. package/skills/consumer-goods-tpe-datakit-deploy/scripts/sf-rest.js +109 -0
  32. package/skills/consumer-goods-tpe-datakit-deploy/scripts/update-field-permissions.js +433 -0
  33. package/skills/service-catalog-template-coordinate/SKILL.md +263 -0
  34. package/skills/service-catalog-template-coordinate/examples/output-templates.md +44 -0
  35. package/skills/service-catalog-template-coordinate/references/mcp-invocation.md +183 -0
  36. package/skills/service-catalog-template-coordinate/references/operations.md +230 -0
  37. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/SKILL.md +243 -0
  38. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/cli-invocation.md +205 -0
  39. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/helper-contracts.md +236 -0
  40. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/permset-topology.md +132 -0
  41. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-activated-agents.mjs +106 -0
  42. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-agent-access-state.mjs +113 -0
  43. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-assignment-state.mjs +99 -0
  44. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-platform-permset-availability.mjs +155 -0
  45. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/gate-unified-catalog-tiers.mjs +100 -0
  46. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/rank-candidate-users.mjs +95 -0
  47. package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/resolve-target-user.mjs +86 -0
  48. package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +44 -23
  49. package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +33 -9
  50. package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +17 -18
  51. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +3 -1
  52. package/skills/service-itsm-agentic-setup-configure/SKILL.md +20 -12
  53. package/skills/service-itsm-agentic-setup-configure/examples/output-templates.md +73 -5
  54. package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -7
  55. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/cli-invocation.md +45 -33
  56. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/reactivation.md +8 -6
  57. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +10 -10
  58. package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/classify-agent-existence.mjs +114 -56
  59. package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/classify-preflight.mjs +33 -17
  60. package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +9 -3
  61. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -7
  62. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/cli-invocation.md +43 -32
  63. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/reactivation.md +6 -4
  64. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +10 -10
  65. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-agent-existence.mjs +106 -55
  66. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-preflight.mjs +27 -13
  67. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +9 -3
  68. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +159 -161
  69. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json +51 -0
  70. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +1 -1
  71. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +120 -0
  72. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +28 -5
  73. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +19 -1
  74. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +350 -30
  75. package/skills/service-itsm-channels-coordinate/SKILL.md +80 -213
  76. package/skills/service-itsm-slack-itservice-configure/SKILL.md +363 -0
  77. package/skills/service-itsm-slack-itservice-configure/references/connect-agentforce-to-slack.md +159 -0
  78. package/skills/service-itsm-slack-itservice-configure/references/manage-slack-connection.md +88 -0
  79. package/skills/service-itsm-slack-itservice-configure/references/manage-user-access.md +117 -0
  80. package/skills/service-itsm-slack-itservice-configure/references/record-visibility.md +78 -0
  81. package/skills/service-itsm-slack-itservice-configure/references/site-membership-verification.md +126 -0
  82. package/skills/service-itsm-slack-itservice-configure/scripts/classify-user-access.mjs +167 -0
  83. package/skills/service-itsm-teams-configure/SKILL.md +50 -47
  84. package/skills/service-itsm-teams-configure/references/azure-credential-population.md +42 -28
  85. package/skills/service-itsm-teams-configure/references/gotchas.md +1 -2
  86. package/skills/service-itsm-teams-coordinate/SKILL.md +22 -18
  87. package/skills/service-itsm-teams-coordinate/examples/output-templates.md +12 -9
  88. package/skills/service-itsm-teams-itdesk-configure/SKILL.md +60 -44
  89. package/skills/service-itsm-teams-itservice-configure/SKILL.md +56 -70
  90. package/skills/service-catalog-template-deploy/SKILL.md +0 -310
  91. package/skills/service-catalog-template-deploy/references/cli-invocation.md +0 -258
  92. package/skills/service-catalog-template-deploy/scripts/activate-verify.mjs +0 -164
  93. package/skills/service-catalog-template-deploy/scripts/build-deploy-payload.mjs +0 -94
  94. package/skills/service-catalog-template-deploy/scripts/resolve-template.mjs +0 -331
  95. package/skills/service-catalog-template-search/SKILL.md +0 -212
  96. package/skills/service-catalog-template-search/references/cli-invocation.md +0 -128
  97. 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, and the IT Service Employee agent. 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."
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.6"
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, and the IT Service Employee agent in Salesforce Service Cloud ITSM by presenting the available capabilities, delegating to specialized child skills, and tracking progress.
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 both agents)`, `IT Service Fulfiller Agent`, `IT Service Employee Agent`) — 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 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 two Stage 2 agent templates, 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.`) so a single row carries purpose, scope, and the install action together. 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.
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. Both the Fulfiller Agent (#2) and Employee Agent (#3) depend on Studio being enabled and will fail if attempted first. Reorder the queue silently so Studio runs before either agent. This rule is non-negotiable and applies whether the user selected two features (Studio + one agent) or all three.
62
-
63
- **User-order rule (between #2 and #3 only).** Fulfiller Agent (#2) and Employee Agent (#3) are independent of each other — neither depends on the other. If **both** are selected, run them in the order the user listed them (default 2 → 3 when unspecified). This rule applies **only** to the ordering between #2 and #3; it never overrides the Studio-first rule above.
64
-
65
- | # | Feature | Child Skill |
66
- |---|---------|-------------|
67
- | 1 | Agentforce Studio enablement (Foundation for both agents) | `service-itsm-agentic-setup-agentforce-studio-configure` |
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 both agents) (turn ON org-level Agentforce + Einstein GenAI feature toggles)
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 (install from template, commit, and activate the agent)
111
- 3. IT Service Employee Agent (install from template, commit, and activate the 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 both the Fulfiller and Employee agents are **built on top
116
- of**. Enable it first — attempting to install or activate either agent before this foundation is
117
- enabled will fail. The two Stage 2 items (Fulfiller and Employee) are independent siblings (neither
118
- depends on the other) — both can be selected together and installed in either order once Stage 1 is
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 two Stage 2 rows end with the short `Setup:` install line, and the `AskUserQuestion` option descriptions carry the same text
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 the Fulfiller Agent or Employee Agent child skill
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
 
@@ -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 both agents) │ Service agent features │ │
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 both agents are built on. Stage 2 items (the Fulfiller and Employee agents) are **installed
38
- from a template and activated**; they can be set up in either order once Stage 1 is done.
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 both agents) │ │
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 and/or Employee agents from their templates. The Fulfiller
59
- agent gives IT technicians an assistant for triage, case summaries, and record
60
- automations; the Employee agent gives requesters self-service help with their
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 both agents) │ │
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.3"
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
- Present the enablement report as a **table** — this is **Stage 1 (Foundation)**, the platform
243
- enablement that Stage 2 (install & activate the agent) is built on. Each Status is one of
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
- ```text
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: <org-alias> (API v67.0)
250
- Agent path: fulfiller | employee
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 | <status> |
255
- | 2 | Agentforce Studio | <status> |
256
- | 3 | Agentforce for IT Service | <status> |
257
- | 4 | <path-specific toggle(s)> | <status> |
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: SUCCESS | PARTIAL | FAILED | CANNOT-CONFIRM | ERROR
259
+ **Verdict:** SUCCESS | PARTIAL | FAILED | CANNOT-CONFIRM | ERROR
260
260
 
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>
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
- Render `overall` and each feature's `finalStatus` from `scripts/classify-final-report.mjs` verbatim (substitute into each `<status>` cell) — do not recompute them. No files are produced beyond the temporary response captures used by the classifiers.
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, enable ITSM capabilities, wants a guided walkthrough, or asks what is needed to get ITSM running. Presents a multi-select track menu and delegates to domain sub-orchestrators — Incident Management, Agentforce for ITSM (Studio + Fulfiller), CMDB, and Channels (Portal, Notifications, Microsoft Teams, Slack). Any prerequisites (such as the Incident Management master switch for Track 1) are owned and enforced inside the relevant sub-orchestrator, not at this level. Triggers on: set up ITSM, configure service management, ITSM setup, get ITSM running, walkthrough, set up CMDB / channels / Teams / Slack / Agentforce for ITSM. 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."
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.3"
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
- ### 2. Present the available tracks as a multi-select
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
- Emit the **Track menu** template from `examples/output-templates.md` AND, in the same response, a single `AskUserQuestion` call with `multiSelect: true` whose options mirror the rendered rows — the table is the visual view; the tool call is how the selection is collected. Both MUST appear together, never one without the other. Do NOT show tracks that have no working sub-orchestrator. Selecting one track is valid; selecting several enqueues them for sequential handling in step 3.
54
+ ### 2. Present the available tracks as a paged multi-select
53
55
 
54
- The menu MUST also include a **"Full guided setup"** option in addition to the per-track rows. Selecting it expands to *every* available track (all rows currently rendered in the table, in dependency order — see the "Sub-Orchestrators" table above). Treat it as if the user had selected every track in one interaction; step 3's sequential-confirmation loop still runs per-track, so the user can bail between any two tracks. Full guided setup is mutually exclusive with per-track selections — if the user picks it alongside individual tracks, treat it as "Full guided setup" and ignore the per-track picks. Emitting only per-track rows without the Full guided setup option violates this rule.
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 — accept a set of one or more tracks in a single interaction
83
- - ALWAYS pair the rendered track-menu table with an `AskUserQuestion` (`multiSelect: true`) call in the same response — the table is the visual view; the tool call is the selection channel. Emitting the table alone breaks the selection channel; emitting the tool call alone hides the visual view
84
- - ALWAYS include a **"Full guided setup"** option in the track menu (in addition to the per-track rows). It expands to every available track in dependency order — the sequential-confirmation loop still runs per-track so the user can stop between any two tracks. Full guided setup is mutually exclusive with per-track selections; if picked with individual tracks, treat it as Full guided setup and ignore the per-track picks
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 is presented as a multi-select (single-select is only acceptable when the user has already named a specific track directly)
102
- - [ ] The track menu emitted BOTH the ASCII table AND an `AskUserQuestion` (`multiSelect: true`) presenting the same options in the same response — never one without the other
103
- - [ ] The track menu included a **"Full guided setup"** option in addition to the per-track rows; if the user selected it, all available tracks were enqueued in dependency order with per-track confirmation between them
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
- │ A │ Full guided setup │ Run every available track in dependency order — │ — │
26
- │ │ │ per-track confirmation between them so you can stop │ │
27
- │ │ │ any time. Mutually exclusive with per-track picks. │ │
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