@salesforce/afv-skills 1.57.0 → 1.59.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 (81) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-bot-upgrade/SKILL.md +3 -1
  3. package/skills/agentforce-generate/SKILL.md +21 -1
  4. package/skills/agentforce-generate/references/known-issues.md +51 -1
  5. package/skills/agentforce-generate/references/legacy-nga-regression-eval.md +547 -0
  6. package/skills/agentforce-generate/references/upgrade-legacy-agent-to-agentscript.md +577 -0
  7. package/skills/agentforce-generate/scripts/upgrade-legacy-nga-analyze.py +404 -0
  8. package/skills/agentforce-generate/scripts/upgrade-legacy-nga-run-trials.sh +58 -0
  9. package/skills/agentforce-persona-generate/SKILL.md +505 -0
  10. package/skills/agentforce-persona-generate/assets/checklist-template.md +100 -0
  11. package/skills/agentforce-persona-generate/assets/persona-encoding-template.md +252 -0
  12. package/skills/agentforce-persona-generate/assets/persona-template.md +229 -0
  13. package/skills/agentforce-persona-generate/assets/sample-dialog-template.md +50 -0
  14. package/skills/agentforce-persona-generate/assets/workshop-outline-template.md +97 -0
  15. package/skills/agentforce-persona-generate/examples/concierge-persona.md +189 -0
  16. package/skills/agentforce-persona-generate/examples/concierge-sample-dialog.md +70 -0
  17. package/skills/agentforce-persona-generate/examples/drover-persona.md +194 -0
  18. package/skills/agentforce-persona-generate/examples/drover-sample-dialog.md +62 -0
  19. package/skills/agentforce-persona-generate/examples/steady-hand-persona.md +188 -0
  20. package/skills/agentforce-persona-generate/examples/steady-hand-sample-dialog.md +68 -0
  21. package/skills/agentforce-persona-generate/examples/yt-persona.md +195 -0
  22. package/skills/agentforce-persona-generate/examples/yt-sample-dialog.md +66 -0
  23. package/skills/agentforce-persona-generate/references/attributions.md +36 -0
  24. package/skills/agentforce-persona-generate/references/interaction-design-notes.md +30 -0
  25. package/skills/agentforce-persona-generate/references/persona-encoding-guide.md +566 -0
  26. package/skills/agentforce-persona-generate/references/persona-framework.md +796 -0
  27. package/skills/agentforce-persona-generate/references/refinement-mappings.md +31 -0
  28. package/skills/agentforce-persona-generate/references/scoring-rubric.md +58 -0
  29. package/skills/agentforce-persona-generate/references/voice-catalog.json +2327 -0
  30. package/skills/agentforce-persona-generate/references/workshop-question-policy.md +90 -0
  31. package/skills/agentforce-persona-generate/references/workshop-scenario-seeds.md +119 -0
  32. package/skills/agentforce-persona-generate/scripts/parse_agent_yaml.py +223 -0
  33. package/skills/dx-app-analytics-query/SKILL.md +8 -8
  34. package/skills/experience-ui-bundle-app-coordinate/SKILL.md +12 -12
  35. package/skills/experience-ui-bundle-app-coordinate/references/phase-completion-validation.md +3 -3
  36. package/skills/experience-ui-bundle-app-coordinate/references/phase-execution-pattern.md +9 -7
  37. package/skills/experience-ui-bundle-app-coordinate/scripts/check-dangling-refs.mjs +132 -0
  38. package/skills/experience-ui-bundle-app-coordinate/scripts/check-hosting-target.mjs +62 -0
  39. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-1-complete.mjs +71 -0
  40. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-4-complete.mjs +95 -0
  41. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-6-ready.mjs +78 -0
  42. package/skills/experience-ui-bundle-app-coordinate/scripts/check-prerequisites.mjs +21 -0
  43. package/skills/experience-ui-bundle-app-coordinate/scripts/check-sfdx-project.mjs +28 -0
  44. package/skills/experience-ui-bundle-custom-app-generate/SKILL.md +3 -1
  45. package/skills/experience-ui-bundle-custom-app-generate/scripts/resolve-uibundle-path.mjs +40 -0
  46. package/skills/experience-ui-bundle-frontend-generate/SKILL.md +7 -5
  47. package/skills/experience-ui-bundle-frontend-generate/scripts/check-preconditions.mjs +70 -0
  48. package/skills/experience-ui-bundle-frontend-generate/scripts/resolve-ui-bundle.mjs +76 -0
  49. package/skills/experience-ui-bundle-frontend-generate/scripts/verify-rules.mjs +115 -0
  50. package/skills/experience-ui-bundle-metadata-generate/SKILL.md +7 -3
  51. package/skills/experience-ui-bundle-metadata-generate/references/angular-metadata-generate.md +1 -1
  52. package/skills/experience-ui-bundle-metadata-generate/references/react-metadata-generate.md +1 -1
  53. package/skills/experience-ui-bundle-metadata-generate/scripts/check-api-version.mjs +43 -0
  54. package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.mjs +131 -0
  55. package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.mjs +152 -0
  56. package/skills/experience-ui-bundle-mfa-configure/references/branding.md +10 -6
  57. package/skills/experience-ui-bundle-project-generate/SKILL.md +13 -39
  58. package/skills/experience-ui-bundle-project-generate/scripts/flatten-project.mjs +33 -11
  59. package/skills/experience-ui-bundle-project-generate/scripts/generate-project.mjs +77 -0
  60. package/skills/experience-ui-bundle-project-generate/scripts/install-deps.mjs +95 -0
  61. package/skills/service-omni-channel-setup-coordinate/SKILL.md +1 -0
  62. package/skills/service-omni-command-center-analyze/SKILL.md +1 -0
  63. package/skills/service-omni-command-center-configure/SKILL.md +92 -0
  64. package/skills/service-omni-command-center-configure/references/api-notes.md +50 -0
  65. package/skills/service-omni-command-center-configure/scripts/configure-and-report.sh +257 -0
  66. package/skills/service-omni-command-center-configure/scripts/settings_document.py +97 -0
  67. package/skills/service-omni-command-center-configure/scripts/tests/test_command_center_configure_contracts.py +206 -0
  68. package/skills/experience-ui-bundle-app-coordinate/scripts/check-dangling-refs.sh +0 -42
  69. package/skills/experience-ui-bundle-app-coordinate/scripts/check-hosting-target.sh +0 -26
  70. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-1-complete.sh +0 -35
  71. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-4-complete.sh +0 -47
  72. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-6-ready.sh +0 -33
  73. package/skills/experience-ui-bundle-app-coordinate/scripts/check-prerequisites.sh +0 -20
  74. package/skills/experience-ui-bundle-app-coordinate/scripts/check-sfdx-project.sh +0 -15
  75. package/skills/experience-ui-bundle-custom-app-generate/scripts/resolve-uibundle-path.sh +0 -30
  76. package/skills/experience-ui-bundle-frontend-generate/scripts/check-preconditions.sh +0 -37
  77. package/skills/experience-ui-bundle-frontend-generate/scripts/resolve-ui-bundle.sh +0 -66
  78. package/skills/experience-ui-bundle-frontend-generate/scripts/verify-rules.sh +0 -58
  79. package/skills/experience-ui-bundle-metadata-generate/scripts/check-api-version.sh +0 -30
  80. package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.sh +0 -73
  81. package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.sh +0 -118
@@ -0,0 +1,252 @@
1
+ ---
2
+ version: "3.0.0"
3
+ date: 2026-05-15
4
+ ---
5
+
6
+ # [Agent Name] — Persona Encoding
7
+
8
+ **Agent Authoring Tool:** [Agent Script (default) / Agentforce Builder]
9
+ **Mode:** [Greenfield (starter skeleton) / Brownfield (re-encoding existing .agent file)]
10
+ **Channel:** [web chat / mobile chat / SMS / email / telephony / multimodal-with-audio / embedded / other]
11
+ **Date:** [date]
12
+ **Source persona:** [agent-name]-persona.md
13
+ **Source .agent file (brownfield only):** [path]
14
+
15
+ ---
16
+
17
+ ## Agent Script Encoding (.agent file)
18
+
19
+ *Include this section when tool = Agent Script. Output must be valid Agent Script syntax per the schema in `forcedotcom/sf-skills/skills/developing-agentforce/`.*
20
+
21
+ ### Greenfield: Starter `.agent` Skeleton
22
+
23
+ For new agents, the encoding output is a minimal valid `.agent` file. Subagents, actions, variables, and routing are placeholders for the user to flesh out — the skill never invents structure.
24
+
25
+ ```agentscript
26
+ system:
27
+ instructions: |
28
+ [Full persona content as a literal block: Identity Traits, Negative Identity,
29
+ Personification, all 13 dimensions with behavioral rules, Phrase Book,
30
+ Tone Boundaries, Tone Flex rules, Never-Say List, Lexicon (global), Guardrails
31
+ (if any), Immutable content with "use exactly as written" directive.]
32
+ messages:
33
+ welcome: "[Static welcome in persona voice]"
34
+ error: "[Static error in persona voice]"
35
+
36
+ config:
37
+ developer_name: "[snake_case_name]" # API identifier; matches directory name
38
+ agent_label: "[Display Name]" # User-facing display name (from NAME spoke)
39
+ description: "[Functional one-liner — what the agent does]"
40
+ agent_type: "[AgentforceServiceAgent | AgentforceEmployeeAgent]"
41
+ default_agent_user: "[username]" # Required only for ServiceAgent
42
+
43
+ language:
44
+ default_locale: "en_US" # BCP 47
45
+
46
+ start_agent entry:
47
+ description: "[Routing description — what intent this entry point handles]"
48
+ reasoning:
49
+ instructions: |
50
+ [Routing logic — placeholder for the user to implement]
51
+
52
+ subagent main:
53
+ description: "[Placeholder — replace with actual subagent purpose]"
54
+ reasoning:
55
+ instructions: |
56
+ [Placeholder — the persona's global instructions are inherited from
57
+ system.instructions. Per-subagent calibration goes here when the user
58
+ adds real subagents.]
59
+ ```
60
+
61
+ **Formatting rules** (per developing-agentforce):
62
+ - 4-space indentation, never tabs
63
+ - Strings double-quoted
64
+ - Booleans `True` / `False` capitalized
65
+ - Identifiers `[a-zA-Z][a-zA-Z0-9_]*`, max 80 chars
66
+
67
+ ### Brownfield: Re-Encoding Existing `.agent`
68
+
69
+ For brownfield mode, the encoding output is a **proposed-new-file** with annotated changes — only persona-bearing fields are modified. Routing, subagent structure, action contracts, and variables stay exactly as the source had them.
70
+
71
+ The persona-bearing fields the skill modifies:
72
+ - `system.instructions`
73
+ - `system.messages.welcome`
74
+ - `system.messages.error`
75
+ - Each subagent's `system:` override (if used) — only when tone flex warrants
76
+ - Each subagent's `reasoning.instructions:` (the persona-relevant portion)
77
+ - Each action's `progress_indicator_message:`
78
+
79
+ A companion diff summary at `persona/[agent-name]/persona-diff.md` lists what changed and why, scoped to persona only.
80
+
81
+ ### Per-Subagent Calibration *(optional, only when subagents are declared)*
82
+
83
+ ```agentscript
84
+ subagent [subagent_name]:
85
+ description: "[subagent purpose]"
86
+ system: # Optional override; reserve for major persona shifts
87
+ instructions: |
88
+ [Full alternate system block — replaces global for this subagent]
89
+ reasoning:
90
+ instructions: |
91
+ Persona reminder: [one-line recall of global identity/persona]
92
+ Brevity: [calibration for this subagent]
93
+ Tone flex: [Emotional Coloring + Empathy shifts for this subagent context]
94
+ Lexicon: [subagent-specific terms with brief definitions]
95
+ Phrase book: [situational phrases relevant to this subagent]
96
+ Humor: [guidance for this subagent — often "drop to None for escalation"]
97
+ ```
98
+
99
+ *Repeat per subagent that needs persona calibration.*
100
+
101
+ ### Per-Action Loading Text *(optional, only when actions exist + voice channel)*
102
+
103
+ Set on the **action definition** (the `target:` action under the subagent's top-level `actions:` block), not on the `reasoning.actions` tool reference:
104
+
105
+ ```agentscript
106
+ actions:
107
+ [action_name]:
108
+ target: "flow://[FlowName]"
109
+ description: "[What this action does]"
110
+ progress_indicator_message: "[In-character loading text]"
111
+ include_in_progress_indicator: True
112
+ ```
113
+
114
+ *Repeat per action that needs in-character loading text. The progress message is most impactful in voice channels (telephony, multimodal-with-audio).*
115
+
116
+ ### Dynamic Welcome Message *(optional)*
117
+
118
+ *If the user opts for a dynamic welcome supplementing the static one. See [Salesforce greeting design guide](https://www.salesforce.com/blog/design-better-greetings-agentforce-builder/).*
119
+
120
+ ```agentscript
121
+ # Dynamic welcome encoded as logic in start_agent.reasoning.instructions
122
+ # (time-of-day, returning user, context-aware opening)
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Agentforce Builder Encoding
128
+
129
+ *Include this section when tool = Agentforce Builder.*
130
+
131
+ ### Agent Configuration Fields
132
+
133
+ | Field | Limit | Value | Chars |
134
+ |---|---|---|---|
135
+ | **Name** | 80 | [agent name] | [count] |
136
+ | **Role** | 255 | [functional summary — what the agent does, who it serves. No persona style.] | [count] |
137
+ | **Company** | 255 | [company context] | [count] |
138
+ | **Welcome Message** | 800 (aim ≤ 255) | [welcome in persona voice] | [count] |
139
+ | **Error Message** | — | [error in persona voice] | — |
140
+
141
+ ### Agentforce Builder Settings
142
+
143
+ | Setting | Recommendation | Rationale |
144
+ |---|---|---|
145
+ | **Tone** | [Casual / Neutral / Formal] | [mapping to Register + Formality] |
146
+ | **Conversation Recs on Welcome** | [On / Off] | [rationale] |
147
+ | **Conversation Recs in Responses** | [On / Off] | [rationale] |
148
+
149
+ ### Global Persona Block
150
+
151
+ *For a dedicated global instructions topic.*
152
+
153
+ ```text
154
+ [Full persona content: identity, dimensions, phrase book, tone
155
+ boundaries (including profanity boundary if set), never-say list,
156
+ chatting style rules. This is the primary encoding surface in Builder.]
157
+ ```
158
+
159
+ ### Immutable Terms *(include when applicable)*
160
+
161
+ *Brand-defined and legal/compliance terms that must be preserved exactly as written in all agent output.*
162
+
163
+ | Term | Type | Usage |
164
+ |---|---|---|
165
+ | [term] | [brand / legal] | [usage rule — e.g., "Always use this exact term for the loyalty program"] |
166
+ | [term] | [brand / legal] | [usage rule] |
167
+
168
+ *Encode in global instructions with explicit "use exactly as written" directive. If a term appears in both brand and legal contexts with different wording, the resolution chosen during design is noted here.*
169
+
170
+ ### Per-Topic Persona Instructions (Agentforce Builder)
171
+
172
+ *Builder UI still labels these "Topics" even though Agent Script renamed the concept to "Subagent." When used here, "Topic" refers to the Builder field; the same concept maps to a `subagent` block in Agent Script.*
173
+
174
+ *Include when topics are provided.*
175
+
176
+ **[Topic Name]:**
177
+ ```text
178
+ Persona reminder: [one-line recall of global identity/persona]
179
+ Brevity: [calibration for this topic]
180
+ Tone: [tone flex encoding for this topic context]
181
+ Lexicon: [domain terms and usage notes for this topic]
182
+ Phrase book: [situational phrases relevant to this topic]
183
+ Humor: [guidance — e.g., "drop to None for escalation"]
184
+ ```
185
+
186
+ *Repeat for each topic.*
187
+
188
+ ### Loading Text
189
+
190
+ | Action | Loading Text |
191
+ |---|---|
192
+ | [action name] | [in-character loading text] |
193
+ | [action name] | [in-character loading text] |
194
+ | Generic (fallback) | [in-character loading text] |
195
+
196
+ ---
197
+
198
+ ## Voice Encoding
199
+
200
+ *Include this section when modality includes telephony/voice.*
201
+
202
+ ### Voice Selection
203
+
204
+ **Selection criteria:**
205
+
206
+ | Criteria | Target | Persona Rationale |
207
+ |---|---|---|
208
+ | **Language** | [primary language] | [why] |
209
+ | **Gender** | [inferred or specified] | [source — name, pronouns, or user input] |
210
+ | **Voice Qualities** | [what to look for — e.g., warm, professional, measured pace] | [which persona dimensions drive this] |
211
+
212
+ **Recommended voices** (from default library — verify in your org, listen to previews):
213
+
214
+ | Voice | Gender | Accent | Style | Why |
215
+ |---|---|---|---|---|
216
+ | [name] | [m/f] | [accent] | [style] | [persona match reasoning] |
217
+ | [name] | [m/f] | [accent] | [style] | [persona match reasoning] |
218
+ | [name] | [m/f] | [accent] | [style] | [persona match reasoning] |
219
+
220
+ **Fine-tuning starting points** (experiment in voice preview — these are starting points, not prescriptions):
221
+
222
+ | Parameter | Starting Point | Why |
223
+ |---|---|---|
224
+ | **Speed** | [value] | [e.g., "Concise brevity + hospitality warmth → moderate pace, not rushed"] |
225
+ | **Stability** | [value] | [e.g., "Encouraging coloring needs expressiveness → lower stability"] |
226
+ | **Similarity** | [value] | [e.g., "Default — no reason to deviate from base voice"] |
227
+
228
+ ### Key-Term Prompting
229
+
230
+ | Term |
231
+ |---|
232
+ | [brand name] |
233
+ | [product name] |
234
+ | [domain term] |
235
+
236
+ ### Pronunciation Dictionary *(optional)*
237
+
238
+ | Word | Pronunciation (IPA) | Verified? |
239
+ |---|---|---|
240
+ | [term] | [approximate IPA] | Verify in voice preview |
241
+
242
+ ### Voice Welcome Message
243
+
244
+ ```text
245
+ [Shorter than text welcome. Includes AI disclosure. In persona voice.]
246
+ ```
247
+
248
+ ### Voice Instruction Adjustments
249
+
250
+ - Brevity: [text default] → [voice adjustment, one position shorter]
251
+ - Formatting: suppressed (no emoji, bullets → ordinals)
252
+ - [Any pausing guidance for structured data]
@@ -0,0 +1,229 @@
1
+ ---
2
+ version: "2.1.0"
3
+ date: 2026-05-15
4
+ ---
5
+
6
+ # Agent Persona: {{AGENT_NAME}}
7
+
8
+ > Generated by `designing-agent-persona` v{{VERSION}}
9
+ > Date: {{DATE}}
10
+ > Archetype: {{ARCHETYPE_NAME or "None — custom build"}}
11
+
12
+ ## Persona Summary
13
+
14
+ *A 2-3 sentence narrative capturing the essence of this agent's personality in the context of its business goals. Not a list of traits — a paragraph you could paste in a Slack message when sharing this persona with stakeholders.*
15
+
16
+ {{EXECUTIVE_SUMMARY — e.g., "Drover is a no-nonsense internal sales coach who reads deals like a stockman reads terrain. He leads with data-backed recommendations, delivers hard truths with easy confidence, and speaks in the laconic Australian idiom of a seasoned bushman. Built to help enterprise AEs close more effectively by cutting through CRM noise to surface what actually matters."}}
17
+
18
+ *For Bold or Distinctive agents: the summary must convey specific behavioral rules (when personality lands, when it pulls back) — not just adjectives. "Irreverent and bold" is brand copy. "Irreverent in routine interactions, pulls back to direct-and-warm during complaints" is a design spec.*
19
+
20
+ ---
21
+
22
+ ## Context
23
+
24
+ *Design inputs gathered during persona creation. Fields are populated only when provided.*
25
+
26
+ | Field | Value |
27
+ |---|---|
28
+ | **Agent Name** | {{AGENT_NAME}} |
29
+ | **Name Decision** | {{named / unnamed / brand-as-name / pending}} |
30
+ | **Personification** | {{Talking System / Familiar Thing / Personal Assistant}} |
31
+ | **Channel** | {{web chat / mobile chat / SMS / email / telephony / multimodal-with-audio / embedded / other}} |
32
+ | **Audience** | {{employees / customers / partners / mixed — description of who is served}} |
33
+ | **Primary Use Cases** | {{USE_CASES — at least one required}} |
34
+ | **Company / Brand** | {{Company name and brief context}} |
35
+ | **Business Goals** | {{What the agent is meant to achieve — or omit if not gathered}} |
36
+ | **Success Metrics** | {{How success is measured — or omit if not gathered}} |
37
+ | **Regulated Industry** | {{Yes/No — if Yes, note the domain}} |
38
+
39
+ *Additional context (agent type, surface, topics) is gathered during encoding, not persona design.*
40
+
41
+ ---
42
+
43
+ ## Identity
44
+
45
+ *3-5 personality adjectives that anchor every design decision.*
46
+
47
+ - **{{Adjective 1}}** — {{Behavioral definition: what this looks like in the agent's actual responses}}
48
+ - **{{Adjective 2}}** — {{Behavioral definition}}
49
+ - **{{Adjective 3}}** — {{Behavioral definition}}
50
+ - **{{Adjective 4}}** *(optional)* — {{Behavioral definition}}
51
+ - **{{Adjective 5}}** *(optional)* — {{Behavioral definition}}
52
+
53
+ ### What You're Not *(optional)*
54
+
55
+ *Character-level anti-patterns. What this agent fundamentally is not — broader than tone boundaries or specific phrases.*
56
+
57
+ - Not a {{character anti-pattern 1}} — {{why this matters for this persona}}
58
+ - Not a {{character anti-pattern 2}} — {{why this matters}}
59
+
60
+ ### Values *(optional — explicit input only)*
61
+
62
+ *What this agent believes. Populated only from explicit user input — never inferred.*
63
+
64
+ - {{Belief 1}} — {{observable behavior it generates}}
65
+ - {{Belief 2}} — {{observable behavior}}
66
+
67
+ ### Backstory *(optional)*
68
+
69
+ *A fictional background that informs the designer's word choice. The agent never says this aloud.*
70
+
71
+ {{1-2 sentences of backstory, or omit section if not applicable.}}
72
+
73
+ ---
74
+
75
+ ## Persona Profile
76
+
77
+ *All 13 dimensions with selected values and confidence annotations.*
78
+
79
+ | Category | Dimension | Value | Signal |
80
+ |---|---|---|---|
81
+ | Register | Register | {{Value}} | {{strong / default}} |
82
+ | Voice | Formality | {{Value}} | {{strong / default}} |
83
+ | Voice | Warmth | {{Value}} | {{strong / default}} |
84
+ | Voice | Personality Intensity | {{Value}} | {{strong / default}} |
85
+ | Voice | Reading Level | {{Value}} | {{strong / default}} |
86
+ | Tone | Emotional Coloring | {{Value}} | {{strong / default}} |
87
+ | Tone | Empathy Level | {{Value}} | {{strong / default}} |
88
+ | Delivery | Brevity | {{Value}} | {{strong / default}} |
89
+ | Delivery | Humor | {{Value}} | {{strong / default}} |
90
+ | Chatting Style | Emoji | {{Value}} | {{strong / default}} |
91
+ | Chatting Style | Formatting | {{Value}} | {{strong / default}} |
92
+ | Chatting Style | Punctuation | {{Value}} | {{strong / default}} |
93
+ | Chatting Style | Capitalization | {{Value}} | {{strong / default}} |
94
+
95
+ *Constraint check: Do upstream choices align with downstream ones? See constraint notes in the framework for natural pairings. "Strong" = clear evidence in input. "Default" = inferred from context.*
96
+
97
+ ---
98
+
99
+ ## Dimension Detail
100
+
101
+ *Behavioral rules for each dimension selection, organized by category. These are the concrete rules that govern the agent's behavior.*
102
+
103
+ ### Register: {{Position Name}}
104
+
105
+ *{{One-liner from framework}}*
106
+
107
+ - {{Behavioral bullet 1}}
108
+ - {{Behavioral bullet 2}}
109
+ - {{Behavioral bullet 3}}
110
+ - {{Behavioral bullet 4}}
111
+
112
+ ### Voice
113
+
114
+ **Formality: {{Position Name}}** — {{Description from framework. Additional notes on how formality manifests for this agent.}}
115
+
116
+ **Warmth: {{Position Name}}** — {{Description from framework. Additional notes on interpersonal temperature for this agent.}}
117
+
118
+ **Personality Intensity: {{Position Name}}** — {{Description from framework. What kind of character comes through and how.}}
119
+
120
+ **Reading Level: {{Position Name}}** — {{Description from framework. How the agent handles domain vocabulary relative to the user's knowledge level.}}
121
+
122
+ {{If voice surface: Voice Channel Parameters — Pitch, Speaking Rate, Energy, Warmth.}}
123
+
124
+ ### Tone
125
+
126
+ **Emotional Coloring: {{Position Name}}** — {{Description from framework. How the agent comes across emotionally.}}
127
+
128
+ **Empathy Level: {{Position Name}}** — {{Description from framework. How feelings are handled.}}
129
+
130
+ **Tone Boundaries:**
131
+ - {{What the agent must never sound like — authored per persona}}
132
+ - {{Context-specific boundary based on Emotional Coloring}}
133
+ - {{When Humor is not None: "No humor in error states, escalation, or high-stakes contexts."}}
134
+
135
+ ### Tone Flex
136
+
137
+ *How tone shifts from baseline in response to context.*
138
+
139
+ **Baseline:** Emotional Coloring: {{Position}}, Empathy Level: {{Position}}
140
+
141
+ | Trigger | Dimension | Shift | Hard Boundary |
142
+ |---|---|---|---|
143
+ | {{Trigger 1, e.g., "User frustrated"}} | {{Dimension}} | {{From → To}} | {{What it must never cross}} |
144
+ | {{Trigger 2}} | {{Dimension}} | {{From → To}} | {{Hard boundary}} |
145
+ | {{Trigger 3}} | {{Dimension}} | {{From → To}} | {{Hard boundary}} |
146
+
147
+ ### Delivery
148
+
149
+ **Brevity: {{Position Name}}** — {{Description from framework. Tapering behavior, "One Breath Test" applicability.}}
150
+
151
+ **Humor: {{Position Name}}** — {{Description from framework. If not None: how humor manifests for this persona, when it's suppressed.}}
152
+
153
+ ### Chatting Style
154
+
155
+ **Emoji: {{Position Name}}** — {{Description and how it manifests for this persona. If Functional: define emoji vocabulary.}}
156
+
157
+ **Formatting: {{Position Name}}** — {{Description and how it manifests for this persona.}}
158
+
159
+ **Punctuation: {{Position Name}}** — {{Description and how it manifests for this persona.}}
160
+
161
+ **Capitalization: {{Position Name}}** — {{Description and how it manifests for this persona.}}
162
+
163
+ ---
164
+
165
+ ## Expression
166
+
167
+ *What the agent sounds like and what it never sounds like.*
168
+
169
+ ### Phrase Book
170
+
171
+ *Example phrases the agent would use in common situations. Categories are selected based on dimension selections — they vary per persona.*
172
+
173
+ | Situation | Example Phrase(s) |
174
+ |---|---|
175
+ | {{Category 1}} | {{Drafted phrases}} |
176
+ | {{Category 2}} | {{Drafted phrases}} |
177
+ | {{Category 3}} | {{Drafted phrases}} |
178
+ | Discourse Markers | {{Conversational connectors tuned to formality and personality — e.g., "So," "Right," "Here's the thing"}} |
179
+ | ... | ... |
180
+
181
+ ### Never-Say List
182
+
183
+ *Specific words, phrases, and patterns the agent must never use.*
184
+
185
+ - {{Anti-phrase 1 — e.g., "I'd be happy to help you with that!"}}
186
+ - {{Anti-phrase 2 — e.g., "Great question!"}}
187
+ - {{Anti-phrase 3 — identity contradiction}}
188
+ - {{Anti-phrase 4 — register violation}}
189
+ - {{Anti-phrase 5 — cognitive-processing marker, e.g., "Let me think about that"}}
190
+ - ...
191
+
192
+ ---
193
+
194
+ ## Phrasing
195
+
196
+ *What words and terms the agent uses.*
197
+
198
+ ### Lexicon
199
+
200
+ *Brand terminology and domain vocabulary. Include when the agent has topic-specific language.*
201
+
202
+ **Global Lexicon:**
203
+
204
+ | Term | Usage | Immutable? |
205
+ |---|---|---|
206
+ | {{Term 1}} | {{How to use it}} | {{Yes/No}} |
207
+ | {{Term 2}} | {{How to use it}} | {{Yes/No}} |
208
+
209
+ **Per-Topic Lexicon** *(optional — populated during encoding):*
210
+
211
+ | Topic | Terms |
212
+ |---|---|
213
+ | {{Topic 1}} | {{Domain terms for this topic}} |
214
+ | {{Topic 2}} | {{Domain terms for this topic}} |
215
+
216
+ *Omit per-topic lexicon when the agent has no specialized vocabulary beyond global terms.*
217
+
218
+ ### Immutable Content *(optional)*
219
+
220
+ *Content that must be preserved exactly as written — legal disclaimers, compliance wording, brand-defined terminology. Never alter, paraphrase, or shorten these.*
221
+
222
+ - {{Immutable content block 1 — e.g., verbatim legal disclaimer}}
223
+ - {{Immutable term 1 — e.g., "CVS affiliated pharmacy"}}
224
+
225
+ *Omit this section when there is no legally or brand-defined immutable content.*
226
+
227
+ ---
228
+
229
+ *Companion artifact: Sample dialog is generated as a separate file (`[agent-name]-sample-dialog.md`) to keep the persona spec clean for downstream consumption.*
@@ -0,0 +1,50 @@
1
+ ---
2
+ version: "1.0"
3
+ date: 2026-03-12
4
+ ---
5
+
6
+ # Sample Dialog: {{AGENT_NAME}}
7
+
8
+ > Generated by `sf-ai-agentforce-persona` v{{VERSION}}
9
+ > Date: {{DATE}}
10
+ > Source persona: `{{PERSONA_FILE_PATH}}`
11
+
12
+ *This file is a validation artifact — it demonstrates how the persona sounds in conversation. It is generated from the persona document and can be regenerated at any time. Edit the persona, not this file.*
13
+
14
+ ---
15
+
16
+ ## Scenario 1: Happy Path
17
+
18
+ *{{Brief description of the routine scenario}}*
19
+
20
+ > **User:** {{User message}}
21
+ >
22
+ > **{{AGENT_NAME}}:** {{Agent response demonstrating persona}}
23
+ >
24
+ > **User:** {{User follow-up}}
25
+ >
26
+ > **{{AGENT_NAME}}:** {{Agent response}}
27
+
28
+ ## Scenario 2: Uncertainty / Low Confidence
29
+
30
+ *{{Brief description of a scenario where the agent doesn't have a clear answer}}*
31
+
32
+ > **User:** {{User message}}
33
+ >
34
+ > **{{AGENT_NAME}}:** {{Agent response showing how it handles uncertainty}}
35
+ >
36
+ > **User:** {{User follow-up}}
37
+ >
38
+ > **{{AGENT_NAME}}:** {{Agent response}}
39
+
40
+ ## Scenario 3: Persona Boundary
41
+
42
+ *{{Brief description of a scenario where the agent's tone or persona is tested}}*
43
+
44
+ > **User:** {{User message that tests persona boundaries}}
45
+ >
46
+ > **{{AGENT_NAME}}:** {{Agent response showing how it stays in character}}
47
+ >
48
+ > **User:** {{User follow-up}}
49
+ >
50
+ > **{{AGENT_NAME}}:** {{Agent response}}
@@ -0,0 +1,97 @@
1
+ ---
2
+ version: "1.0.0"
3
+ date: 2026-05-15
4
+ ---
5
+
6
+ # Persona Design Workshop — {{AGENT_NAME or "[Agent Name]"}}
7
+
8
+ > Date: {{DATE}}
9
+ > Generated from: `{{agent-name}}-persona.md`
10
+ > Audience: customer's internal stakeholders (Brand, Legal, Experience, Subject-matter)
11
+ > Format: ~30-45 minutes, async-friendly (questions can be answered in writing)
12
+
13
+ ---
14
+
15
+ ## Background (for the facilitator)
16
+
17
+ {{ONE_PARAGRAPH_BACKGROUND}}
18
+
19
+ A short paragraph (≤4 sentences) summarizing where the persona stands today — what's been drafted, what's been validated by signal, what's open. The goal of this workshop is to surface stakeholder input on the open items, not to walk through everything. Stakeholder time is the scarce resource.
20
+
21
+ ---
22
+
23
+ ## Activity 1 — Identity calibration
24
+
25
+ *~10 min. Validate the agent's character at the highest-leverage level.*
26
+
27
+ {{N}} questions. Each is open-ended and asks stakeholders to confirm, push back, or pick.
28
+
29
+ - **Q1.** {{QUESTION_1}}
30
+ - Style: {{validate | choose-between | open-spectrum}}
31
+ - Dimension(s): {{Identity, Personification, ...}}
32
+
33
+ - **Q2.** {{QUESTION_2}}
34
+ - Style: ...
35
+ - Dimension(s): ...
36
+
37
+ - *(more if needed; aim for 2-3 in this activity)*
38
+
39
+ ---
40
+
41
+ ## Activity 2 — Tone in difficult moments
42
+
43
+ *~10-15 min. Surface tradeoffs the persona will face under pressure. Would-you-rather format.*
44
+
45
+ For each pair, stakeholders pick A or B. The two options must be **meaningfully different** with different consequences.
46
+
47
+ - **Pair 1.** Scenario: {{SCENARIO_FROM_SEED — e.g., "A customer expresses frustration"}}
48
+ - **A:** {{Response option A in the persona's voice}}
49
+ - **B:** {{Response option B — meaningfully different}}
50
+ - What's at stake: {{one-line consequence framing}}
51
+
52
+ - **Pair 2.** Scenario: {{SCENARIO}}
53
+ - **A:** ...
54
+ - **B:** ...
55
+ - What's at stake: ...
56
+
57
+ - *(2-4 pairs total; pick scenarios from `references/workshop-scenario-seeds.md` that align with the agent's use cases and the dimensions where stakeholder input is wanted)*
58
+
59
+ ---
60
+
61
+ ## Activity 3 — Spectrum check
62
+
63
+ *~10 min. For dimensions where the brand input is silent or where stakeholder convergence is needed.*
64
+
65
+ These are dimension cards — printable / FigJam-able. Stakeholders place a dot or sticky on the spectrum.
66
+
67
+ - **{{DIMENSION_NAME}}** — *{{one-line definition from framework}}*
68
+ ```text
69
+ {{POSITION_1}} ⟷ {{POSITION_2}} ⟷ {{POSITION_3}} ⟷ {{POSITION_4}}
70
+ ```
71
+ *Place the agent here.*
72
+
73
+ - **{{DIMENSION_NAME}}** — *{{one-line definition from framework}}*
74
+ ```text
75
+ {{POSITION_1}} ⟷ {{POSITION_2}} ⟷ {{POSITION_3}}
76
+ ```
77
+ *Place the agent here.*
78
+
79
+ - *(only include dimensions where confidence is low or stakeholder input is genuinely useful — don't ask the spectrum question for dimensions where the brand input already gave a strong answer)*
80
+
81
+ ---
82
+
83
+ ## Pre-read materials
84
+
85
+ - **Persona draft:** [{{agent-name}}-persona.md]({{agent-name}}-persona.md)
86
+ - **Sample dialog:** [{{agent-name}}-sample-dialog.md]({{agent-name}}-sample-dialog.md)
87
+ - **Brand guide:** {{LINK if provided}}
88
+
89
+ Stakeholders should read these before the workshop. The activities assume familiarity.
90
+
91
+ ---
92
+
93
+ ## After the workshop
94
+
95
+ Bring stakeholder answers back to the skill. Run AUGMENT (FILL OUT spoke) or re-run DRAFT to incorporate the answers, then re-run SCORE to see how the persona moved.
96
+
97
+ If a key dimension answer surfaced a contradiction with what the skill drafted, expect SCORE's Conflict-Pair check to flag it — that's a feature, not a bug. Reconcile in the next pass.