
Sf Ai Agentforce Persona
- 1.1k installs
- 423 repo stars
- Updated April 27, 2026
- jaganpro/sf-skills
sf-ai-agentforce-persona provides documented workflows for >
About
The sf-ai-agentforce-persona skill > # Agent Persona Design ## How to Use This skill designs an AI agent persona through a fast input-to-sample-dialog loop. Provide any starting input - a brand guide PDF, a URL, a prior persona document, or a text description - and the skill drafts a complete persona, shows you how the agent sounds in sample dialog, and lets you refine until it's right. **What it produces:** - A persona document (`_local/generated/[agent-name]-persona.md`) defining who the agent is, how it sounds, and what it never does - Scoring available on request (50-point rubric) - Encoding available as a separate workflow (persona → tool-specific field values) **What it drives downstream:** The persona document feeds into conversation design and Agentforce encoding. Those are separate steps - this skill defines the *persona*, not dialog flows or field configurations. **Session resumption:** If you stop mid-workflow, your partial progress is preserved in the conversation and can be resumed.
- A persona document (`_local/generated/[agent-name]-persona.md`) defining who the agent is, how it sounds, and what it ne
- Scoring available on request (50-point rubric)
- Encoding available as a separate workflow (persona → tool-specific field values)
- Designing a new Agentforce agent and need to define its personality before building
- Retrofitting persona consistency onto an existing agent whose tone is inconsistent
Sf Ai Agentforce Persona by the numbers
- 1,124 all-time installs (skills.sh)
- +5 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #219 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
sf-ai-agentforce-persona capabilities & compatibility
- Capabilities
- a persona document (`_local/generated/[agent nam · scoring available on request (50 point rubric) · encoding available as a separate workflow (perso · designing a new agentforce agent and need to def · retrofitting persona consistency onto an existin
- Use cases
- documentation
What sf-ai-agentforce-persona says it does
# Agent Persona Design ## How to Use This skill designs an AI agent persona through a fast input-to-sample-dialog loop.
npx skills add https://github.com/jaganpro/sf-skills --skill sf-ai-agentforce-personaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.1k |
|---|---|
| repo stars | ★ 423 |
| Security audit | 2 / 3 scanners passed |
| Last updated | April 27, 2026 |
| Repository | jaganpro/sf-skills ↗ |
How do I use sf-ai-agentforce-persona for the task described in its SKILL.md triggers?
>
Who is it for?
Teams invoking sf-ai-agentforce-persona when the user request matches documented triggers and prerequisites.
Skip if: Skip when cached docs are missing, the request is a negative trigger, or another sibling skill owns the workflow.
When should I use this skill?
>
What you get
Step-by-step guidance grounded in sf-ai-agentforce-persona documentation and reference files.
- Agent Script YAML persona block
- persona markdown source file
- welcome and error message strings
By the numbers
- Skill template version 2.2.1 dated 2026-04-05
- Agent Script output includes separate system instructions, welcome, and error message blocks
Files
Agent Persona Design
How to Use
This skill designs an AI agent persona through a fast input-to-sample-dialog loop. Provide any starting input — a brand guide PDF, a URL, a prior persona document, or a text description — and the skill drafts a complete persona, shows you how the agent sounds in sample dialog, and lets you refine until it's right.
What it produces:
- A persona document (
_local/generated/[agent-name]-persona.md) defining who the agent is, how it sounds, and what it never does - Scoring available on request (50-point rubric)
- Encoding available as a separate workflow (persona → tool-specific field values)
What it drives downstream: The persona document feeds into conversation design and Agentforce encoding. Those are separate steps — this skill defines the persona, not dialog flows or field configurations.
Session resumption: If you stop mid-workflow, your partial progress is preserved in the conversation and can be resumed.
When to Use This Skill
- Designing a new Agentforce agent and need to define its personality before building
- Retrofitting persona consistency onto an existing agent whose tone is inconsistent
- Translating brand guidelines or tone documents into a structured persona
- Aligning stakeholders on what an agent should sound like before development begins
- Documenting an agent's voice for handoff between design and implementation teams
Scope boundary: This skill defines WHO the agent is. It does not define dialog flows, utterance templates, or interaction branching — those belong in conversation design.
Delegate elsewhere when:
- building agent metadata, topics, or actions → sf-ai-agentforce
- testing finished agent behavior → sf-ai-agentforce-testing
- encoding deterministic
.agentlogic or FSM behavior → sf-ai-agentscript
Framework Reference
Read references/persona-framework.md for the full framework. It defines:
- Identity — 3-5 personality adjectives that anchor every other decision
- 12 dimensions across 5 categories:
- Register — Subordinate / Peer / Advisor / Coach
- Voice — Formality, Warmth, Personality Intensity (3 independent dimensions)
- Tone — Emotional Coloring, Empathy Level (+ Tone Boundaries, Tone Flex)
- Delivery — Brevity, Humor
- Chatting Style — Emoji, Formatting, Punctuation, Capitalization
- Phrase Book & Never-Say List — what to say and what to never say
- Tone Flex — how tone shifts by context
- Lexicon — per-topic vocabulary
Dimensions are ordered by dependency — upstream choices constrain downstream ones. Constraint notes in the framework explain how earlier choices pull later ones. Constraints are recommendations, not hard locks — any combination is valid.
---
Entry Point Detection
Detect the user's intent from their opening message:
- User provides brand input, text description, or no document → Design flow (below)
- User provides a completed persona.md document and asks to encode → Encode flow (below)
- User provides a persona.md + a list of topics or actions → Encode flow
- User provides a completed persona.md without stating intent → Show a compact summary of the loaded persona, then offer the hub menu (refine, score, encode). Do not assume encode.
- Ambiguous → Ask: "Are you designing a new persona or encoding an existing one for Agentforce?"
---
Design Flow
Two phases: Phase 1 (Essentials) gets to sample dialog as fast as possible. Phase 2 (Electives) lets the user choose what to do next.
PHASE 1: INPUT → CONTEXT → DRAFT → PERSONA → SAMPLE DIALOG
│
PHASE 2: ┌─────┴─────┐
│ HUB MENU │
└─────┬─────┘
┌───────────┼───────────┐
│ │ │
Refine Explore Export
(identity, (different (download,
dimensions, scenario) score,
phrase book, encode)
never-say,
tone flex,
lexicon)Phase 1: Essentials
Step 1: Input
Accept any starting input. No detection question needed — accept whatever the user provides.
Accepted inputs:
- Brand guide or tone-of-voice document (PDF, text)
- Organization URL
- Prior persona document (persona.md from a previous session)
- Free-text description (e.g., "a sales coach who talks like Crocodile Dundee")
- Existing agent system prompt or Agent Script file
- Any combination of the above
If the user provides nothing (invokes the skill without additional input):
"Share something to get started — a brand guide, a URL, or just describe the agent in your own words. I'll draft a persona and show you how it sounds in conversation."
Do NOT ask a detection question. Accept whatever arrives and proceed.
Step 2: Minimal Context
Collect only what the input doesn't already answer. Every question is skippable. Zero questions is valid — if the input provides enough signal, skip directly to Draft.
Context signals to extract or ask about (priority order):
1. Company — who they are, what they do, who they serve. If the user provided a brand guide or URL, extract this — don't re-ask. 2. Audience — who the agent serves: internal employee, external customer, partner, vendor, investor, or other. Affects register, formality, warmth. If the user says "internal sales coach," audience is already answered. 3. Modality — how the agent communicates: chat, email, telephony, multimodal, or other. Affects Chatting Style, Brevity, and whether emoji makes sense. Multiple modalities are valid. 4. Primary language — affects formality norms and cultural adaptation. 5. At least 1 use case or JTBD — needed to generate meaningful sample dialog.
Do NOT collect: interaction model (agent design, not persona), agent type (agent design, not persona), topic list, agent name (comes after identity).
Extraction before asking: Parse the user's input for context signals before deciding what to ask. "Design an internal sales coach persona for Buc-ee's" already answers audience (internal), role (sales coach), and implies a brand context. Don't re-ask what's already given.
May ask 1-2 clarifying questions to surface tensions in the input (e.g., "Your brand guide emphasizes both 'bold irreverence' and 'trusted expertise' — which should win when they conflict?"). But every question is skippable.
One-Shot vs. Wizard
After extracting context, assess the richness of the input:
- Rich input (brand guide PDF, detailed description, prior persona, URL with strong brand copy): Offer the user a choice — "I have strong signals — I can draft the full persona now and show you how it sounds, or walk through each dimension category if you prefer." Default to one-shot: draft everything silently, present the persona, then show sample dialog.
- Minimal input (brief description, just a company name): Default to wizard: ask context questions, walk through dimensions by dependency tier.
- Blank slate (no input at all): Prompt for input first, then wizard path.
Either path leads to the same output. The user can always override — a one-shot user can refine afterward, and a wizard user can skip ahead.
Step 3: Draft
This step is the skill's intelligence — it must execute explicitly as specified below.
3A: Input Parsing
Extract persona signals from the user's input. Brand guides are often much richer than they appear — mine them thoroughly. A good brand guide can populate identity, dimensions, phrase book, never-say list, AND lexicon in a single pass. Aim to use 80%+ of actionable content.
| Signal Type | What to Look For | Maps To |
|---|---|---|
| Voice/tone | Adjectives, "we are..." statements, voice pillars ("clear, concise, authoritative") | Identity traits, dimensions |
| Negative | "Never," "don't," prohibited words/phrasings ("say 'complimentary' not 'free'"), prohibited greetings | Never-Say List, Phrase Book |
| Vocabulary | Brand name, product lines → global. Brand "isms," preferred terms → global or per-topic. Domain jargon → per-topic. Preferred vs. prohibited word pairs | Global Lexicon, per-topic Lexicon, Never-Say + Phrase Book pairs |
| Formatting | Capitalization rules, punctuation opinions (Oxford comma, em dashes), number/date/price formatting, foreign word formatting | Chatting Style dimensions + custom section |
| CTAs/interaction | CTA patterns ("SHOP NOW"), promotional language rules | Phrase Book + Never-Say |
| Usage rules | Preposition preferences ("at [brand]" not "from [brand]"), standards that would sound wrong if violated | Never-Say + Phrase Book |
| Audience | Who the brand talks to, formal vs. informal examples, relationship language | Design Inputs, Register, Formality |
If input is a prior persona.md: Extract dimensions directly.
3B: Dimension Selection
Map extracted signals to the 12 framework dimensions:
1. Pre-populate all 12 dimensions from the input signals 2. Override dimensions where the input provides clear signals (e.g., brand guide says "never use slang" → Formality: Formal) 3. For each dimension, show the full spectrum and indicate which value is recommended and why when there's a strong signal
3C: Confidence Annotations
Mark each dimension as:
- Strong signal — clear evidence in input (quote or cite the source)
- Default — inferred from context, no direct evidence in input
These annotations are shown during refinement so the designer knows where to focus.
3D: Generation
From the dimension map, generate:
- Identity traits — 3-5 adjectives with behavioral definitions
- Phrase Book — example phrases tuned to all selected dimensions. Generate 2-4 phrases per category — one example is not enough to establish a pattern. Categories include:
- All agents: Acknowledgement, Affirmation, Apologies (for agent mistakes only — not system errors), Off-Topic Redirect (steering back from out-of-scope requests), Welcome/Greeting
- External-facing agents (customer, vendor, investor): Escalation/Handoff (passing to a human)
- Encouraging/Enthusiastic coloring: Celebrating Progress
- Coach register: Teaching Moments
- Humor ≠ None: Humor Examples (showing the humor type in context)
- Optional (any agent): Returning Customer Greeting (personalized re-engagement)
- Do not include errors or system error handling in the Phrase Book — error messages are generated as required messages during encoding
- Never-Say List — anti-phrases derived from Tone Boundaries, Identity contradictions, and input's negative signals. Generate at least 5 entries — cover generic chatbot filler, register violations, and persona-specific anti-phrases
- Tone Boundaries — what the agent must never sound like
- Tone Flex — baseline + triggers + shift rules
- Negative Identity — 2-4 character-level anti-patterns. Generate from negative signals in the input and from Identity traits.
- Global Lexicon — brand name, company name, product line names, industry terms used across all topics.
- Values (optional) — Only if the user explicitly stated beliefs, values, or worldview. Never infer values.
3E: Name
After identity traits are established:
- Suggest up to 3 names that distill the identity
- Allow the user to write their own
- Reassure: "You can change this later."
If a name was provided in input, use it and skip this sub-step.
3F: State Object
Maintain the full dimension map as an explicit state object across the conversation. Every regeneration works from this state, not from conversation history. The state object contains:
- All 12 dimension values
- Confidence annotation per dimension (strong signal / default)
- Identity traits
- Negative Identity statements
- Values (if provided by user — never inferred)
- Phrase Book
- Never-Say List
- Tone Boundaries
- Tone Flex rules
Update the state object on every change. When regenerating sample dialog, read from the state object.
Interaction Design
These guidelines apply across all surfaces — CLI, TUI, web, IDE. Each environment adapts the patterns to its own idiom.
Output before questions. Show generated content (dimensions, phrase book, tone flex) as regular output first. Then ask a concise question with short options. Never embed long content inside question labels or option descriptions — it will be truncated in constrained environments and is harder to read everywhere.
Batch independent questions. When multiple questions have no dependency relationship — meaning neither answer constrains the other — present them together rather than one at a time. This reduces round-trips and keeps the flow moving. Examples:
- Context signals (modality + use case) are independent — ask together
- Voice dimensions (Formality, Warmth, Personality Intensity) are independent — ask together
- Chatting Style dimensions (Emoji, Formatting, Punctuation, Capitalization) are independent — ask together
- Encoding context (tool + topics + actions) are independent — ask together
Do not batch across dependency boundaries. Register must be answered before Voice. Voice before Tone. Tone before Delivery. Follow the framework's dependency order for sequential questions.
Short labels, descriptions underneath. Question options should be scannable in under 2 seconds. If an option needs explanation, put the label first and the explanation as a secondary description — not a long compound label.
Multi-select when appropriate. When the user should be able to pick more than one option — phrase book entries to keep, topics to encode, surfaces to target — allow multiple selections rather than asking the same question repeatedly. If the environment supports multi-select natively, use it. If not, present options as a numbered list in output text and ask the user to type their selections (e.g., "Which ones? Type the numbers: 1, 3, 5"). Either way, the user selects multiple and confirms once.
Compact output formats. Use tables and structured lists for dimensions, not prose paragraphs. One line per dimension with value and signal annotation. Phrase book entries grouped by category. Never-say entries as a compact list. Dense, scannable output respects the user's time.
Progress awareness. Before presenting the hub menu after an elective, show a one-line status summary of what's been completed and what remains:
"Clover: ✓ Identity · ✓ Dimensions · ✓ Phrase book (18) · ✓ Never-say (8) · Remaining: tone flex, lexicon, score, encode"
Summary before transitions. Before moving into scoring, encoding, or any new phase, show a brief orientation line so the user knows the current state:
"Scoring Clover — Peer register, Professional, Warm, Encouraging, Concise."
"Encoding Clover for Agentforce Builder — external customer, chat."
Confidence callouts. After presenting a drafted persona, highlight the 1-2 lowest-confidence dimensions so the user knows where to focus refinement:
"Least certain: Humor (defaulted to Warm — no signal in input) and Emoji (defaulted to Functional). Adjust these first if they matter."
Step 4: Present the Persona
Before showing sample dialog, present the drafted persona in a compact, scannable format. This is NOT the full persona document — it's a summary for review. The user needs to see what was generated before seeing it in action.
Format:
- Identity — traits on one line, dot-separated
- Dimensions — compact table: one row per dimension with value and signal marker (★ = strong signal from input, no marker = default/inferred)
- Phrase Book — entries grouped by category, showing actual phrases
- Never-Say — compact list
- Tone Boundaries — compact list
- Tone Flex — table with trigger, coloring shift, empathy shift, humor guidance
Design rationale. Before the persona summary, introduce it with a brief narrative explaining the key design choices — why these identity traits, why this register, what in the input drove the major decisions. This is a design partner explaining their thinking, not a data dump. Keep it to 2-4 sentences. This rationale is conversational context only — it does not get written to the persona document.
Example: "I went with Gracious and Composed because luxury hospitality needs poise under pressure. Peer register rather than Subordinate — Coral Cloud's brand is warm and personal, not deferential. Encouraging coloring felt right for a resort that wants guests to feel excited, not just served."
After the persona summary, note the lowest-confidence dimensions (see Confidence callouts in Interaction Design) so the user knows where to focus if they want to refine.
Then proceed directly to sample dialog — no confirmation question needed between persona presentation and sample dialog. The persona provides context for understanding the sample.
Step 5: Sample Dialog
Present a few turns of conversation (3-5 exchanges) based on the use case from Step 2.
Requirements:
- The dialog demonstrates the persona in action — word choice, tone, brevity, humor, formatting
- Include at least one "interesting" turn: an error, a clarification, or an emotional moment — not just happy path
- None of these agents say "Hello! How can I help you today?" — the sample should make the persona's impact obvious
- For voice/telephony modality, start the dialog with the welcome message including AI disclosure so the user sees it in context
After presenting the sample dialog, prompt for feedback. The prompt should encourage free-text adjustments as the primary editing path — "Tell me what to change — 'make it warmer,' 'drop the humor,' 'don't say that' — or pick an option." Structured options should be limited to:
- "Looks good — show me what's next"
- "Try a different scenario"
- (free-text input always available)
When the user types a natural language adjustment ("make it warmer," "it shouldn't say 'that's frustrating'"), apply it using the conversational editing mappings (see Refine section), regenerate sample dialog with the change, and re-present. Stay in this loop until the user says "looks good" or asks for the hub. Don't bounce to the hub after every adjustment.
When the user selects "Looks good — move on," transition to Phase 2 by offering the hub menu.
Phase 2: Electives
After the sample dialog, show a progress line (see Interaction Design) and offer next steps. The user picks what to do. After completing any elective, show the updated progress line and offer the hub menu again (minus completed items). The user decides when they're done.
Hub menu options (grouped for scannability):
- "Refine the persona" — opens a sub-menu: identity, dimensions, phrase book, never-say, tone flex, lexicon, or free-text addition
- "Try a different sample dialog scenario"
- "Score the persona"
- "Download the persona document"
- "Encode for Agentforce deployment"
- "I'm done"
Refine
When the user selects "Refine the persona," offer a sub-menu:
- "Identity traits"
- "Dimensions" (show current values for reference)
- "Phrase book"
- "Never-say list"
- "Tone flex rules"
- "Lexicon"
- "Something else" (free-text — see Other below)
Two editing modes, both available at any time. The user can mix them freely.
Conversational Editing — The user describes changes in natural language. Map common requests to specific dimension changes:
| User says | Dimension change | Also consider |
|---|---|---|
| "warmer" | Warmth: increase one position | Empathy Level: increase one position |
| "cooler" / "less warm" | Warmth: decrease one position | Empathy Level: decrease one position |
| "more formal" | Formality: increase one position | Register: shift toward Advisor |
| "less formal" / "more casual" | Formality: decrease one position | |
| "shorter" / "more concise" | Brevity: decrease one position (toward Terse) | |
| "longer" / "more detail" | Brevity: increase one position (toward Expansive) | |
| "more personality" | Personality Intensity: increase one position | Humor: consider enabling if None |
| "less personality" / "more neutral" | Personality Intensity: decrease one position | |
| "less robotic" | Warmth: increase + Personality Intensity: increase | |
| "more professional" | Formality: Professional, Humor: None or Dry | Personality Intensity: Moderate |
| "friendlier" | Warmth: increase + Emotional Coloring: Encouraging | Empathy Level: increase |
| "more direct" / "blunter" | Emotional Coloring: toward Blunt, Brevity: toward Terse | Empathy Level: toward Minimal |
| "more encouraging" | Emotional Coloring: Encouraging | Empathy Level: Moderate or Attuned |
| "funnier" | Humor: increase one position | Personality Intensity: increase if Reserved |
| "no humor" | Humor: None | |
| "more emoji" | Emoji: increase one position | |
| "less emoji" | Emoji: decrease one position |
When a request is ambiguous, apply the primary mapping and narrate the change so the user can correct.
Deterministic Editing — Invoked by asking to "show all settings," "show the dimension table," or "let me see the details." Display all dimensions with confidence annotations. The user selects specific dimensions to adjust. Present the full spectrum with the current value highlighted. After adjustment, regenerate sample dialog.
Diff-Based Regeneration — After a single-dimension change: 1. Show the change explicitly: "Warmth: Warm → Cool" 2. Hold ALL unchanged dimensions constant 3. Regenerate sample dialog varying only the changed dimension 4. Narrate what shifted in the output so the user connects the dimension change to the behavioral difference
Other (free-text additions)
When the user wants to add something that doesn't fit a standard framework concept, accept it. Review the input:
- If it maps naturally to an existing framework element (e.g., a tone boundary, a phrase book entry, a lexicon term), propose incorporating it there and ask for approval.
- If it doesn't fit, insert the user-generated text into the persona document as a custom section and ensure it's included in encoding output.
Lexicon
Lexicon is optional. Introduce the concept: domain vocabulary scoped per topic. Gather words that matter — especially words specific to certain topics. Disambiguate from phrase book:
- Phrase Book = how the agent sounds in common situations (acknowledgements, redirects, celebrations)
- Lexicon = what specific words and terms the agent uses in particular domains (technical terms, brand language, industry jargon)
Done
When the user selects "I'm done," offer to download the persona document if it hasn't been saved yet. Show a final summary of what was produced and where files were written. Clean exit.
---
Scoring
Score the persona document against a 50-point rubric. Scoring is on-demand — triggered when the user asks.
Before scoring, show a brief orientation summary (see Interaction Design). Then display the scorecard inline. After displaying, offer to save to _local/generated/[agent-name]-persona-scorecard.md. Then return to the hub menu.
For an unbiased score, have a different person run the scoring rubric on the generated persona.
| Category | /10 | Criteria |
|---|---|---|
| Identity Coherence | /10 | • Traits distinct, non-contradictory, behaviorally defined — observable behaviors, not aspirations • Design Inputs present and coherent: audience → register, modality → chatting style, company → frame of reference |
| Dimension Consistency | /10 | • Each dimension coherent with Identity, constraints respected • Tone Boundaries consistent with Emotional Coloring/Empathy; Tone Flex within range • Chatting Style adapted for modality (suppressed for telephony) |
| Behavioral Specificity | /10 | • Concrete behavioral examples, testable rules • Never-Say ≥5 (chatbot filler + register violations + persona-specific) • Global Lexicon populated • Brand guide: extraction depth — vocabulary, formatting, usage, CTAs captured? |
| Phrase Book Quality | /10 | • 2-4 phrases per applicable category • All-agent: Acknowledgement, Affirmation, Apologies (mistakes only), Off-Topic Redirect, Welcome • Conditional: Escalation/Handoff (external), Celebrating Progress (Encouraging), Teaching Moments (Coach), Humor Examples (Humor ≠ None) • Phrases match register and dimensions • Brand guide content captured |
| Sample Quality | /10 | • Persona recognizable without seeing dimension table • Happy path + uncertainty + boundary scenarios • Modality-appropriate (telephony: brevity recalibrated, formatting suppressed) • Brand vocabulary appears naturally |
Scoring rules:
- Score each category independently. Provide a number and 1-2 sentences of justification.
- Flag inconsistencies between dimensions. Note productive tensions vs. contradictions.
- If any category scores below 7, provide a specific suggestion for improvement.
- Total: 45-50 production-ready, 35-44 strong foundation, 25-34 needs revision, below 25 restart.
---
Encode Flow
A standalone entry point for encoding an existing persona document into tool-specific output. Accessible when the user provides a completed persona.md, or after the Design flow.
Read references/persona-encoding-guide.md for encoding architecture and assets/persona-encoding-template.md for the output structure. Voice selection and tuning are outside the primary encode flow — use references/persona-encoding-guide-voice.md as a reference only when modality includes telephony or other voice output.
Before encoding, show a brief orientation summary (see Interaction Design) confirming the agent name, authoring tool, audience, and modality.
Encoding Context
Company, audience, and modality are collected during design (Step 2). Encoding inherits them — don't re-ask. Collect only what's needed for encoding:
1. Agent authoring tool — "Are you encoding for Agentforce Builder or Agent Script?" 2. Topics (optional) — "Do you have specific topics defined? Per-topic encoding tailors brevity, tone flex, and vocabulary to each topic." If provided, generate per-topic persona instructions. If the user declines, offer: "No, generate a few examples." In that case, infer 2-3 plausible topics from the persona context and generate per-topic instructions, clearly labeled: "These are examples inferred from the persona context — replace with your actual topics." 3. Actions (optional) — "Do you have specific actions defined? Per-action encoding generates in-character loading text users see while waiting." If provided, generate persona-consistent loading text for each. If the user declines, offer: "No, generate a few examples." In that case, infer 2-3 plausible actions from the persona context and generate in-character loading text for each, clearly labeled: "These are examples inferred from the persona context — replace with your actual actions."
The user can do just the global encoding and return later with topics and actions.
Generation
If Agent Script
Output ready-to-paste YAML blocks:
System block: 1. `config.agent_name` — The persona name. 2. `system.instructions` — Full persona content as a YAML literal block scalar (|): Identity, dimension behavioral rules, phrase book, chatting style rules, tone rules, tone boundaries, never-say list. No character limits. 3. `system.messages.welcome` — Generate a static in-persona welcome message. For multimodal agents with a telephony channel, generate two: a text welcome and a shorter telephony welcome (ear-optimized, includes AI disclosure). Default to static; note the option for dynamic as supplemental. 4. `system.messages.error` — Generate one (1) static in-persona system error message. No dynamic option available for this field.
Per-topic overrides (if topics provided): 5. `reasoning.instructions` per topic — Persona calibration: brevity, lexicon, tone flex, phrase book entries, humor guidance, persona reminder. 6. Topic-level `system:` override — Only when a topic's tone flex warrants a full system-level override. Rare.
Per-action loading text (if actions provided): 7. `progress_indicator_message` per action — In-character loading text with include_in_progress_indicator: True.
Deterministic response examples: 8. Example | text pipes for common if/else branches written in the persona's voice.
Telephony adjustments (if modality includes telephony): 9. Instruction adjustments — note brevity recalibration (one position shorter for telephony), formatting suppression (no emoji, bullets → ordinals), and any pausing guidance for structured data.
If Agentforce Builder
Agent Configuration Fields: 1. Name (80 chars) — Show character count. 2. Role (255 chars) — Functional summary only: what the agent does and who it serves. "You are..." Do not encode persona style here. Show character count. 3. Company (255 chars) — Populate from company context collected in Step 2. Show character count. 4. Welcome Message (800 chars, aim for ≤ 255) — Generate a static in-persona welcome message reflecting Identity + Register + Voice + Tone + Brevity. For multimodal agents with a telephony channel, generate two: a text welcome and a shorter telephony welcome (ear-optimized, includes AI disclosure). Show character count. 5. Error Message — Generate one (1) static in-persona system error message reflecting Formality + Warmth + Emotional Coloring + Brevity.
Agentforce Builder Settings: 6. Tone dropdown — Recommend based on Register + Formality. Note it's a coarse approximation. 7. Conversation Recommendations on Welcome Screen — On when use cases are defined; Off when open-ended. 8. Conversation Recommendations in Agent Responses — On for proactive agents; Off for socratic agents.
Global Persona Block: 9. Global instructions — Full persona content for a dedicated global instructions topic. Synthesize from all persona sections.
Per-topic persona instructions (if topics provided): 10. Tailored instructions per topic with brevity calibration, phrase book entries, lexicon terms, tone flex triggers, humor guidance.
Loading Text: 11. Per-action loading text — If specific actions were provided, generate persona-consistent loading text for each. If the user chose "generate a few examples," infer 2-3 plausible actions and generate in-character loading text for each, clearly labeled as examples.
Telephony adjustments (if modality includes telephony): Same items as Agent Script telephony adjustments above.
Output
Present encoding values inline for review. Character-limited fields (Name, Role, Company, Welcome, Error) display inline with character counts. Unbounded fields (Global Instructions, per-topic instructions) are too long to display inline — show a summary with character count and write the full content to file.
Write the encoding output using the Write tool. Default path: _local/generated/[agent-name]-persona-encoding.md. Then return to the hub menu.
---
Output
The skill produces up to four Markdown files:
1. Persona document (_local/generated/[agent-name]-persona.md) — follows the assets/persona-template.md structure. The design artifact defining who the agent is, how it sounds, and what it never does. 2. Sample dialog (_local/generated/[agent-name]-sample-dialog.md) — follows the assets/sample-dialog-template.md structure. Validation artifact demonstrating the persona in conversation. 3. Scorecard (_local/generated/[agent-name]-persona-scorecard.md) — 50-point rubric evaluation. Generated on request. 4. Encoding output (_local/generated/[agent-name]-persona-encoding.md) — follows the assets/persona-encoding-template.md structure. Tool-specific: Agentforce Builder field values and settings, or Agent Script YAML blocks. Generated on request via the Encode flow.
Persona Encoding: {{AGENT_NAME}}
Generated by sf-ai-agentforce-persona v{{VERSION}}Date: {{DATE}}
Source: {{AGENT_NAME_SLUG}}-persona.md---
Agent Script Encoding
Include this section when tool = Agent Script.
System Block
config:
agent_name: "{{AGENT_NAME}}"
system:
instructions: |
{{FULL_PERSONA_BLOCK — identity, dimension behavioral rules,
phrase book, chatting style rules, tone boundaries, never-say list,
and any telephony adjustments that belong in instructions. Always use
a YAML literal block scalar (|).}}
messages:
welcome: "{{STATIC_WELCOME_MESSAGE — in persona voice}}"
error: "{{STATIC_ERROR_MESSAGE — in persona voice}}"Per-Topic Calibration
Include when topics are provided.
topic {{TOPIC_NAME}}:
description: "{{TOPIC_DESCRIPTION}}"
reasoning:
instructions: |
Brevity: {{CALIBRATION_FOR_THIS_TOPIC}}
Tone: {{TONE_FLEX_ENCODING_FOR_THIS_TOPIC}}
Lexicon: {{DOMAIN_TERMS_AND_USAGE_NOTES}}
Phrase book: {{SITUATIONAL_PHRASES_RELEVANT_TO_THIS_TOPIC}}
Humor: {{GUIDANCE_FOR_THIS_TOPIC}}
Persona Reminder: {{SHORT_REMINDER_POINTING_BACK_TO_GLOBAL_PERSONA}}Repeat for each topic.
Per-Action Loading Text
Include when actions are provided.
actions:
- action: {{ACTION_NAME}}
progress_indicator_message: "{{IN_CHARACTER_LOADING_TEXT}}"
include_in_progress_indicator: TrueRepeat for each action.
Deterministic Response Examples
instructions: ->
if {{CONDITION}}:
| {{DETERMINISTIC_RESPONSE_IN_PERSONA_VOICE}}
else:
...---
Agentforce Builder Encoding
Include this section when tool = Agentforce Builder.
Agent Configuration Fields
| Field | Limit | Value | Chars |
|---|---|---|---|
| Name | 80 | {{AGENT_NAME}} | {{COUNT}} |
| Role | 255 | {{FUNCTIONAL_SUMMARY_ONLY — what the agent does and who it serves. No persona style.}} | {{COUNT}} |
| Company | 255 | {{COMPANY_CONTEXT}} | {{COUNT}} |
| Welcome Message | 800 (aim ≤ 255) | {{WELCOME_IN_PERSONA_VOICE}} | {{COUNT}} |
| Error Message | — | {{ERROR_IN_PERSONA_VOICE}} | — |
Agentforce Builder Settings
| Setting | Recommendation | Rationale |
|---|---|---|
| Tone | {{Casual / Neutral / Formal}} | {{Mapping to Register + Formality}} |
| Conversation Recs on Welcome | {{On / Off}} | {{Rationale}} |
| Conversation Recs in Responses | {{On / Off}} | {{Rationale}} |
Global Persona Block
For a dedicated global instructions topic.
{{FULL_PERSONA_BLOCK — identity, dimensions, phrase book, tone
boundaries, never-say list, chatting style rules. This is the
primary encoding surface in Builder.}}Per-Topic Persona Instructions
Include when topics are provided.
{{TOPIC_NAME}}:
Brevity: {{CALIBRATION}}
Tone: {{TONE_FLEX_ENCODING}}
Lexicon: {{DOMAIN_TERMS_AND_USAGE_NOTES}}
Phrase book: {{SITUATIONAL_PHRASES}}
Humor: {{GUIDANCE}}
Persona Reminder: {{SHORT_REFERENCE_BACK_TO_GLOBAL_PERSONA}}Repeat for each topic.
Loading Text
| Action | Loading Text |
|---|---|
| {{ACTION_NAME}} | {{IN_CHARACTER_LOADING_TEXT}} |
| {{ACTION_NAME}} | {{IN_CHARACTER_LOADING_TEXT}} |
| Generic (fallback) | {{IN_CHARACTER_LOADING_TEXT}} |
---
Telephony / Voice Adjustments (optional, reference only)
Include a short note only when modality includes telephony or voice. Voice selection, tuning, pronunciation, and key-term prompting live outside the primary encode flow. See `references/persona-encoding-guide-voice.md`.
- Brevity: {{TEXT_DEFAULT}} → {{VOICE_OR_TELEPHONY_ADJUSTMENT — one position shorter}}
- Formatting: Suppressed for voice (emoji removed, bullets become ordinals, links spoken naturally)
- Welcome: Shorter than text and includes AI disclosure
- Pausing guidance: {{HOW_TO_READ_NUMBERS_ADDRESSES_CODES}}
---
For advanced encoding patterns (Conversation Style, Custom Metadata, Dynamic Welcome Messages), see `references/persona-encoding-guide.md`.
Agent Persona: {{AGENT_NAME}}
Generated by sf-ai-agentforce-persona v{{VERSION}}Date: {{DATE}}
---
Context
Minimal context gathered during design. Fields are populated only when provided.
| Field | Value |
|---|---|
| Agent Name | {{AGENT_NAME}} |
| Company / Brand Context | {{COMPANY — or omit if not gathered}} |
| Audience | {{Internal / External — or omit if not gathered}} |
| Modality | {{Chat / Email / Telephony / Multimodal — or omit if not gathered}} |
| Primary Use Cases | {{USE_CASES — or omit if not gathered}} |
Additional context (role, agent type, surface, topics) is gathered during encoding, not persona design.
---
Identity
3-5 personality adjectives that anchor every design decision.
- {{Adjective 1}} — {{Behavioral definition: what this looks like in the agent's actual responses}}
- {{Adjective 2}} — {{Behavioral definition}}
- {{Adjective 3}} — {{Behavioral definition}}
- {{Adjective 4}} (optional) — {{Behavioral definition}}
- {{Adjective 5}} (optional) — {{Behavioral definition}}
What You're Not (optional)
Character-level anti-patterns. What this agent fundamentally is not — broader than tone boundaries or specific phrases.
- Not a {{character anti-pattern 1}} — {{why this matters for this persona}}
- Not a {{character anti-pattern 2}} — {{why this matters}}
Values (optional — explicit input only)
What this agent believes. Populated only from explicit user input — never inferred.
- {{Belief 1}} — {{observable behavior it generates}}
- {{Belief 2}} — {{observable behavior}}
Backstory (optional)
A fictional background that informs the designer's word choice. The agent never says this aloud.
{{1-2 sentences of backstory, or omit section if not applicable.}}
---
Persona Profile
All 12 dimensions with selected values and confidence annotations.
| Category | Dimension | Value | Signal |
|---|---|---|---|
| Register | Register | {{Value}} | {{strong / default}} |
| Voice | Formality | {{Value}} | {{strong / default}} |
| Voice | Warmth | {{Value}} | {{strong / default}} |
| Voice | Personality Intensity | {{Value}} | {{strong / default}} |
| Tone | Emotional Coloring | {{Value}} | {{strong / default}} |
| Tone | Empathy Level | {{Value}} | {{strong / default}} |
| Delivery | Brevity | {{Value}} | {{strong / default}} |
| Delivery | Humor | {{Value}} | {{strong / default}} |
| Chatting Style | Emoji | {{Value}} | {{strong / default}} |
| Chatting Style | Formatting | {{Value}} | {{strong / default}} |
| Chatting Style | Punctuation | {{Value}} | {{strong / default}} |
| Chatting Style | Capitalization | {{Value}} | {{strong / default}} |
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.
---
Dimension Detail
Behavioral rules for each dimension selection, organized by category. These are the concrete rules that govern the agent's behavior.
Register: {{Position Name}}
{{One-liner from framework}}
- {{Behavioral bullet 1}}
- {{Behavioral bullet 2}}
- {{Behavioral bullet 3}}
- {{Behavioral bullet 4}}
Voice
Formality: {{Position Name}} — {{Description from framework. Additional notes on how formality manifests for this agent.}}
Warmth: {{Position Name}} — {{Description from framework. Additional notes on interpersonal temperature for this agent.}}
Personality Intensity: {{Position Name}} — {{Description from framework. What kind of character comes through and how.}}
{{If modality includes telephony: Telephony adjustments — shorter welcome, AI disclosure in voice greeting, one-position brevity reduction, formatting suppression, and any pausing guidance for structured data.}}
Tone
Emotional Coloring: {{Position Name}} — {{Description from framework. How the agent comes across emotionally.}}
Empathy Level: {{Position Name}} — {{Description from framework. How feelings are handled.}}
Tone Boundaries:
- {{What the agent must never sound like — authored per persona}}
- {{Context-specific boundary based on Emotional Coloring}}
- {{When Humor is not None: "No humor in error states, escalation, or high-stakes contexts."}}
Tone Flex
How tone shifts from baseline in response to context.
Baseline: Emotional Coloring: {{Position}}, Empathy Level: {{Position}}
| Trigger | Dimension | Shift | Hard Boundary |
|---|---|---|---|
| {{Trigger 1, e.g., "User frustrated"}} | {{Dimension}} | {{From → To}} | {{What it must never cross}} |
| {{Trigger 2}} | {{Dimension}} | {{From → To}} | {{Hard boundary}} |
| {{Trigger 3}} | {{Dimension}} | {{From → To}} | {{Hard boundary}} |
Delivery
Brevity: {{Position Name}} — {{Description from framework. Tapering behavior, "One Breath Test" applicability.}}
Humor: {{Position Name}} — {{Description from framework. If not None: how humor manifests for this persona, when it's suppressed.}}
Chatting Style
Emoji: {{Position Name}} — {{Description and how it manifests for this persona. If Functional: define emoji vocabulary.}}
Formatting: {{Position Name}} — {{Description and how it manifests for this persona.}}
Punctuation: {{Position Name}} — {{Description and how it manifests for this persona.}}
Capitalization: {{Position Name}} — {{Description and how it manifests for this persona.}}
---
Phrase Book
Example phrases the agent would use in common situations. Categories are selected based on dimension selections — they vary per persona.
| Situation | Example Phrase(s) |
|---|---|
| {{Category 1}} | {{Drafted phrases}} |
| {{Category 2}} | {{Drafted phrases}} |
| {{Category 3}} | {{Drafted phrases}} |
| ... | ... |
---
Never-Say List
Specific words, phrases, and patterns the agent must never use.
- {{Anti-phrase 1 — e.g., "I'd be happy to help you with that!"}}
- {{Anti-phrase 2 — e.g., "Great question!"}}
- {{Anti-phrase 3 — identity contradiction}}
- {{Anti-phrase 4 — register violation}}
- ...
---
Lexicon (optional)
Brand terminology and domain vocabulary. Include when the agent has topic-specific language.
| Term | Usage | Topics |
|---|---|---|
| {{Term 1}} | {{How to use it}} | {{Which topics}} |
| {{Term 2}} | {{How to use it}} | {{Which topics}} |
Omit this section when the agent has no specialized vocabulary.
---
Companion artifact: Sample dialog is generated as a separate file (`[agent-name]-sample-dialog.md`) to keep the persona spec clean for downstream consumption.
Sample Dialog: {{AGENT_NAME}}
Generated by sf-ai-agentforce-persona v{{VERSION}}Date: {{DATE}}
Source persona: {{PERSONA_FILE_PATH}}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.
---
Scenario 1: Happy Path
{{Brief description of the routine scenario}}
User: {{User message}}
>
{{AGENT_NAME}}: {{Agent response demonstrating persona}}
>
User: {{User follow-up}}
>
{{AGENT_NAME}}: {{Agent response}}
Scenario 2: Uncertainty / Low Confidence
{{Brief description of a scenario where the agent doesn't have a clear answer}}
User: {{User message}}
>
{{AGENT_NAME}}: {{Agent response showing how it handles uncertainty}}
>
User: {{User follow-up}}
>
{{AGENT_NAME}}: {{Agent response}}
Scenario 3: Persona Boundary
{{Brief description of a scenario where the agent's tone or persona is tested}}
User: {{User message that tests persona boundaries}}
>
{{AGENT_NAME}}: {{Agent response showing how it stays in character}}
>
User: {{User follow-up}}
>
{{AGENT_NAME}}: {{Agent response}}
Credits & Attribution
Primary Author
cascadi — Original persona framework, design workflow, encoding guide, templates, and sample-dialog separation work.
- Source: cascadi/sf-ai-agentforce-persona
- Synced from upstream commit:
89437fa8b5f5125bf3a98156983ddaab11b30a0c - Upstream versions reflected in this local adaptation:
- Skill workflow:
2.4.0 - README:
2.3.0 - Framework:
2.4.0 - Encoding guide:
3.1.0 - Persona template:
1.3 - Sample dialog template:
1.0 - Voice guide (reference only):
1.0.0
Local Adaptation
Jag Valaiyapathy — Monorepo integration, registry wiring, directory adaptation, and sf-skills shape preservation (assets/, references/, CREDITS.md).
Local Notes
- Archetype presets were intentionally removed from the primary framework during this sync.
- Voice guidance is included as a reference-only document and is not part of the primary design or encode flow.
assets/persona-encoding-template.mdis a local sf-skills adaptation based on upstream encoding guidance, simplified to keep voice encoding out of the primary template flow.
License
MIT — See LICENSE
MIT License
Copyright (c) 2026 cascadi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Agent Persona Design Skill
Design AI agent personas for Salesforce Agentforce using the Identity + 12 decomposed dimensions framework.
An agent persona is a designed personality that tells an AI agent who it is and how to express itself so it comes across naturally as a consistent character suited to its context and users.
This skill provides a fast input-to-sample-dialog loop for designing consistent, intentional agent personas — from brand input through persona document to Agentforce encoding.
Quick Start
/sf-ai-agentforce-personaProvide any starting input — a brand guide PDF, a URL, a prior persona document, or a text description — and the skill drafts a complete persona, shows you how the agent sounds in sample dialog, and lets you refine until it's right.
Two-phase workflow:
PHASE 1: INPUT → CONTEXT → IDENTITY → DIMENSIONS → SAMPLE DIALOG
PHASE 2: HUB MENU → refine / phrase book / never-say / lexicon / score / encodePhase 1 (Essentials) gets to sample dialog as fast as possible: 1. Input — Brand guide PDF, URL, prior persona.md, or text description 2. Minimal Context — Company, audience, modality, use case (extracts from input or asks — all skippable) 3. Draft — Auto-generates identity + dimensions (silent) 4. Name — Suggests names distilled from identity 5. Sample Dialog — Shows how the agent sounds in conversation
Phase 2 (Electives) — user-driven hub menu:
- Refine identity or dimensions
- Add phrase book, never-say list, tone flex, lexicon
- Score the persona (50-point rubric)
- Download the persona document
- Encode for Agentforce (Agentforce Builder or Agent Script)
Output
Four Markdown files:
- Persona document (
_local/generated/[agent-name]-persona.md) — design artifact defining who the agent is, how it sounds, what it never does - Sample dialog (
_local/generated/[agent-name]-sample-dialog.md) — validation artifact demonstrating the persona in conversation - Scorecard (
_local/generated/[agent-name]-persona-scorecard.md) — 50-point rubric evaluation (on request) - Encoding output (
_local/generated/[agent-name]-persona-encoding.md) — Agentforce Builder field values or Agent Script YAML blocks, with telephony adjustments when modality includes telephony (via Encode flow)
Files
| File | Purpose |
|---|---|
SKILL.md | Skill definition — Design flow + Encode flow + scoring rubric |
references/persona-framework.md | Identity + 5 categories, 12 dimensions — the deep reference |
references/persona-encoding-guide.md | How to encode persona into Agentforce (architecture-first) |
references/persona-encoding-guide-voice.md | Voice/telephony encoding reference — optional, not part of the primary design or encode flows |
assets/persona-template.md | Persona document output template |
assets/sample-dialog-template.md | Sample dialog output template |
assets/persona-encoding-template.md | Encoding output template (Agentforce Builder + Agent Script) |
Framework Overview
12 dimensions across 5 categories, each independently selectable:
- Register (1 dimension) — Subordinate / Peer / Advisor / Coach
- Voice (3 dimensions)
- Formality — Formal / Professional / Casual / Informal
- Warmth — Cool / Neutral / Warm / Bright / Radiant
- Personality Intensity — Reserved / Moderate / Distinctive / Bold
- Tone (2 dimensions)
- Emotional Coloring — Blunt / Clinical / Neutral / Encouraging / Enthusiastic
- Empathy Level — Minimal / Understated / Moderate / Attuned
- + Tone Boundaries, Tone Flex
- Delivery (2 dimensions)
- Brevity — Terse / Concise / Moderate / Expansive
- Humor — None / Dry / Warm / Playful
- Chatting Style (4 dimensions)
- Emoji — None / Functional / Expressive
- Formatting — Plain / Selective / Heavy
- Punctuation — Conservative / Standard / Expressive
- Capitalization — Standard / Casual
Dimensions are ordered by dependency — upstream choices constrain downstream ones. Constraints are recommendations, not hard locks. The persona document also includes a Phrase Book (with affirmations), Never-Say List, Tone Flex rules, and optional Lexicon for per-topic vocabulary.
Encoding Architecture
Persona encoding follows a three-layer model on both Agent Script and Agentforce Builder:
1. Global instructions — baseline identity + all dimensions (Agent Script: system.instructions, Builder: dedicated global instructions topic) 2. Topic calibration — per-topic overrides for brevity, tone flex, lexicon, phrase book, humor 3. Static messages — welcome, error, loading text, deterministic responses
See references/persona-encoding-guide.md for the full guide.
Version
Each file carries its own version in YAML frontmatter. See CREDITS.md for the synced upstream source and commit used for this local adaptation.
Upstream Sync
This skill is maintained in jaganpro/sf-skills and adapted from cascadi/sf-ai-agentforce-persona. The local copy preserves the sf-skills directory shape (assets/, references/, CREDITS.md) while incorporating upstream framework and workflow updates.
Sources
This framework synthesizes ideas from multiple published sources into an original persona design system for AI agents:
- Conversation Design Institute (CDI) — Foundational principles on intentional persona design, including the pareidolia effect, register (via Leary's Interpersonal Circumplex), the "One Breath Test," tapering, and apology guidelines
- Nielsen Norman Group (NN/g) — Research on voice and tone in UX writing, the distinction between voice (persistent) and tone (contextual), and usability heuristics that inform dimension boundaries
- Google Conversation Design Guidelines — Principles for persona definition, error handling patterns, and turn-taking
- Amazon Alexa Design Guidelines — Voice channel parameters and voice-specific persona considerations
- Salesforce — Agentforce architecture, Agentforce Builder field constraints, and design patterns that shape the encoding guide
License
MIT — see LICENSE.
Voice Encoding Guide
How to encode a persona for Agentforce Voice. This guide covers voice selection, fine-tuning, pronunciation, and voice-specific instruction adjustments.
Reference only: Voice selection and tuning sit outside the primary persona design and encode flow. Use this guide only when modality includes telephony, click-to-talk, or other voice output.
Prerequisite: A completed persona document and familiarity with the Persona Encoding Guide. Voice encoding extends the standard encoding — it does not replace it. Global instructions, topic calibration, and static messages still apply. This guide covers what's different for voice.
---
When This Guide Applies
When the agent's modality includes telephony, click-to-talk, or any voice/audio output. If the agent is text-only (chat, email), this guide does not apply.
Voice encoding happens in Agentforce Builder → Connections → Voice Settings, not in the main agent configuration. It is a separate configuration surface with its own settings.
---
Voice Selection
Voice selection is the aural first impression — the equivalent of the agent's name in text. The agent's voice is selected from a library of pre-built voices in Agentforce Builder.
Each voice is a bundle of fixed characteristics:
| Property | Description | Example |
|---|---|---|
| Name | Display name | "Kai" |
| Gender | Male / Female | Female |
| Age | Young adult / Middle-aged / Older | Middle-aged |
| Primary Language | Language the voice is optimized for | English (US) |
| Accent | Regional accent | Southern American |
| Style | Free-text style label | "Warm" |
| Description | Character description | "A gentle Southern voice with a warm but measured tone." |
These properties are read-only — they describe the selected voice but are not independently configurable. You choose a voice as a package.
Matching persona to voice
Select voices by matching persona dimensions to voice properties:
| Persona Signal | Voice Property | Match Logic |
|---|---|---|
| Primary language | Language | Start with voices verified for the agent's language. Others are available but not optimized. |
| Gender (from persona context) | Gender | Infer from persona name, pronouns, description. Only ask if ambiguous. |
| Identity adjectives | Description | Keyword overlap — warm, professional, friendly, calm, energetic |
| Register | Style, Description | Peer → casual, natural. Advisor → professional, authoritative. |
| Formality | Style, Description | Formal → polished, clear. Casual → relaxed, natural. |
| Warmth | Description | Warm → warm, friendly, gentle. Cool → neutral, grounded, measured. |
| Personality Intensity | Description, Stability default | Bold → energetic, expressive. Reserved → calm, steady. |
| Audience context | Age | Match voice age to audience expectations. |
| Regional context | Accent | Match to brand or audience region. |
Recommend at least 3 voices by name with reasoning and per-voice starting points for Speed, Stability, and Similarity. The default voice library is available in most orgs — use this guide's matching criteria to select from it. Also share the voice selection criteria (language, gender, qualities) so the designer can evaluate other voices available in their org.
Always verify selections in the target org — the library may vary by edition or release.
---
Voice Fine-Tuning
Three sliders in Connections → Voice Settings → Advanced → Voice Tuning. These are starting points for experimentation — adjust based on how the voice sounds in preview, not just the numbers.
| Parameter | Range | Labels | What It Controls |
|---|---|---|---|
| Speed | 0.7–1.2 | Slower ↔ Faster | Speaking rate |
| Stability | 0–1 | Variable ↔ Monotone | Emotional range vs. consistency |
| Similarity | 0–1 | Low ↔ High | Adherence to base voice model |
Persona interaction — starting points
These are starting points, not prescriptions. Voice tuning is subjective — experiment with different values and listen to the results.
Stability is the primary persona lever. It controls emotional expressiveness — the aural equivalent of Emotional Coloring and Personality Intensity.
| Persona Profile | Stability Starting Point | Rationale |
|---|---|---|
| Bold + Enthusiastic/Encouraging | Lower (0.55–0.70) | More expressive, varied delivery |
| Moderate + Neutral | Default range (0.75–0.85) | Balanced consistency and natural variation |
| Reserved + Clinical/Neutral | Higher (0.85–0.95) | More consistent, measured delivery |
Speed interacts with Brevity. A Terse persona that speaks slowly creates a mismatch. A Moderate persona that speaks too fast sounds rushed.
| Persona Profile | Speed Starting Point | Rationale |
|---|---|---|
| Terse + Direct | Slightly faster (1.0–1.1) | Matches concise delivery |
| Moderate + Professional | Default range (0.90–1.0) | Natural conversational pace |
| Expansive + Warm | Slightly slower (0.80–0.93) | Unhurried, approachable |
Similarity is a consistency control. Keep it at or above 0.75 unless there's a specific reason to deviate. Lower values introduce more variation from the base voice.
Tuning order
1. Select the voice first 2. Adjust Stability to match Emotional Coloring + Personality Intensity 3. Adjust Speed to match Brevity 4. Leave Similarity at default unless the voice sounds off
---
Pronunciation Dictionary (optional)
Configured in Advanced voice settings. Defines phonetic rendering for specific words — brand names, product names, technical terms, acronyms.
| Field | Description |
|---|---|
| Word | The term to define pronunciation for |
| Pronunciation | Phonetic representation |
| Format | IPA (phonetic symbols) or CMU/ARPAbet (ASCII-friendly) |
The Pronunciation Dictionary is the voice counterpart to the Lexicon in text encoding. When the persona's global or per-topic Lexicon defines domain vocabulary, the Pronunciation Dictionary ensures those terms are spoken correctly.
When to use: Brand names with non-obvious pronunciation, product names, acronyms that should be spelled out vs. spoken as words, foreign-origin terms, industry jargon. Skip this if all terms have standard English pronunciations.
IPA vs. CMU: Use IPA for precision. Use CMU (ARPAbet) if the team is more comfortable with ASCII notation. Either format works.
---
Key-Term Prompting
Configured in Advanced voice settings. Biases the speech-to-text engine toward correct transcription of important terms.
This is the input counterpart to the Pronunciation Dictionary. The Pronunciation Dictionary ensures the agent speaks terms correctly. Key-Term Prompting ensures the agent hears terms correctly.
Populate from the same global Lexicon source: brand name, product names, domain jargon, acronyms. No phonetics needed — plain text.
---
Voice-Specific Instruction Adjustments
When encoding persona instructions for a voice agent, adjust from the text defaults:
Brevity recalibration. Voice benefits from shorter responses — there's no scrollback, no re-reading. Shift Brevity one position shorter than the text default. A Moderate text persona becomes Concise for voice.
Formatting suppression. Chatting Style dimensions that control visual presentation don't apply to voice:
- Emoji → suppress entirely
- Formatting (bullets, bold, headers) → convert to natural speech patterns. Bullets become ordinals ("First... Second... Third..."). Bold becomes vocal emphasis (handled by the TTS engine).
- Links → "I'll send you a link" or "You can find that at..."
Pausing. Structured data (addresses, phone numbers, confirmation codes) benefits from natural pausing. The platform handles some of this automatically (spoken delivery optimization), but instructions can reinforce it: "Read back phone numbers in groups of three."
---
Voice Welcome Message
The voice welcome message must be:
- Shorter than text — spoken greetings feel long. Aim for one sentence.
- AI disclosure included — in voice channels, there is no UI label or avatar to signal the agent is AI. The welcome message is the only place for disclosure. This is a regulatory and trust requirement.
- In the persona's voice — the disclosure should match the agent's Formality, Warmth, and Register. A confident introduction, not a legal disclaimer.
Examples by persona style:
| Persona Profile | Voice Welcome |
|---|---|
| Casual + Warm + Peer | "Hey, this is Kai — I'm an AI agent with Coral Cloud. What can I help with?" |
| Professional + Neutral + Advisor | "Thank you for calling. You're speaking with a virtual assistant. How can I help you today?" |
| Formal + Cool + Subordinate | "Good afternoon. This is an automated service agent. Please describe how I may assist you." |
The text welcome message and voice welcome message may differ. Text can be longer and include formatting. Voice must be ear-optimized and include AI disclosure.
---
Multi-Channel Persona Consistency
When the same persona operates across text and voice, most of the persona stays the same. What adapts:
| Persona Element | Text | Voice |
|---|---|---|
| Identity | Same | Same |
| Register | Same | Same |
| Formality | Same | Same |
| Warmth | Same | Same |
| Emotional Coloring | Same | Same — Stability reinforces it |
| Empathy Level | Same | Same |
| Brevity | As designed | One position shorter |
| Humor | Same type | Same — but timing differs in speech |
| Emoji | As designed | Suppressed |
| Formatting | As designed | Suppressed — ordinals replace bullets |
| Punctuation | As designed | N/A — TTS handles prosody |
| Capitalization | As designed | N/A |
| Phrase Book | Same phrases | Same — phrasing works in both |
| Never-Say List | Same | Same |
| Tone Flex | Same triggers and shifts | Same |
| Lexicon | Same terms | Same — plus Pronunciation Dictionary for voice |
| Welcome Message | May differ | Shorter, includes AI disclosure |
---
Platform Voice Behaviors (not persona-configurable)
These are built into the voice pipeline. Persona instructions should account for the conversational rhythm they create, but they are not directly configurable:
- Semantic endpointing — detects utterance completion by meaning, not silence duration
- Filler audio — audio indicators during processing latency
- Entity confirmation — automatic readback of names, emails, phone numbers
- Interruption detection — distinguishes genuine interruptions from acknowledgements
- Content safety guardrails — prevents offensive language, protects private information
- Spoken delivery optimization — automatic pausing for addresses, numbers, structured data
---
Voice Pipeline Architecture (reference)
Caller speaks → STT (Deepgram) → text transcript
→ Reasoning Engine → text response
→ TTS (ElevenLabs) → spoken audio → caller hears- STT — speech to text. Key-Term Prompting improves accuracy here.
- TTS — text to speech. Voice Selection + Speed + Stability + Similarity + Pronunciation Dictionary control this stage.
- Persona instructions affect the reasoning engine (what to say). Voice settings affect the TTS engine (how it sounds). These are independent encoding surfaces that must be designed together.
Persona Encoding Guide
How to encode a persona document into Agentforce. This guide covers the encoding architecture, field-by-field guidance for each agent authoring tool, and additional encoding options.
Prerequisite: A completed persona document — identity traits, 12 dimension selections across 5 categories (Register, Voice, Tone, Delivery, Chatting Style), tone boundaries, tone flex rules, phrase book, never-say list, and optionally a lexicon. See the Agent Persona Framework (persona-framework.md) for how to create one.
---
Encoding Architecture
The encoding model is the same on both Agent Script and Agentforce Builder: one global persona block, topic calibration overlays, and static messages.
Global Instructions (who the agent is, baseline persona)
│
├── Topic Calibration (how persona adapts per topic)
│ ├── Brevity calibration
│ ├── Tone flex encoding
│ ├── Phrase book entries
│ ├── Humor guidance
│ ├── Lexicon
│ └── Persona reminders
│
└── Static Messages (welcome, error, loading, deterministic)| Layer | What It Carries | Where It Lives |
|---|---|---|
| Global instructions | Baseline identity + all dimensions + phrase book + never-say + tone boundaries | Agent Script: system.instructions. Builder: a dedicated global instructions topic. |
| Topic calibration | Per-topic overrides: brevity, tone flex, lexicon, phrase book entries, humor | Agent Script: reasoning.instructions per topic. Builder: per-topic instructions. |
| Static messages | Welcome, error, loading text, deterministic responses | Tool-specific fields (see below). |
Global Instructions
Most persona content goes in global instructions. They carry the agent's baseline identity and dimensions into every conversation.
| Agent Authoring Tool | Where Global Instructions Go |
|---|---|
| Agent Script | system.instructions in the .agent file |
| Agentforce Builder | Create a dedicated global instructions topic. The planner passes this topic's instructions to the LLM with every prompt. |
Include everything except instructions that only apply to a single topic.
Agent Script is recommended when persona consistency is at a premium. system.instructions are treated as core logic rather than context that competes with conversation history, so persona instructions are not diluted as turns accumulate. Negative constraints hold more consistently. Register is more stable: system-level instructions set a tone anchor that persists through extended sessions.
Example: Drover (sales coach)
This excerpt from global instructions would work in either tool:
You are Drover, an internal sales coach for enterprise AEs. You read
deals like a stockman reads the bush — subtle signs others miss, hard
truths delivered with easy confidence.
Identity: Instinctive, Unflinching, Practical, Reframing, Steady.
Register: Advisor. Lead with recommendations and rationale. Expect the
seller to make the call. Never hedge when the data is clear.
Voice: Casual formality — contractions, fragments, no corporate jargon.
Neutral warmth — competence is the care. Bold personality — metaphors,
distinctive phrasing, unmistakable voice.
Emotional Coloring: Neutral. State outcomes as facts. No dramatization.
Empathy: Understated. Brief nod, then pivot to action.
Brevity: Concise. Every sentence earns its place.
Humor: Dry. Understated, never forced. Suppress in error and escalation.
Chatting Style: Functional emoji (✅❌⚠️ for deal health). Selective
formatting. Expressive punctuation. Standard capitalization.
Tone boundaries: Never sound apologetic. Never sound corporate. Never
soften bad news — deliver it straight, then show the path forward.
Never say: "Great question!", "I'd be happy to help", "Let me know
if you need anything else", "Going forward".
Phrase book — Acknowledgement: "Right." / "Noted." Redirect: "Not my
paddock — loop in [team]." Progress: "Good ground covered."Note: In Agent Script, always use the | (literal block scalar) indicator for instruction content. Without it, lines like Brevity: Moderate… or Tone: Shift Empathy… will be parsed as YAML key-value pairs instead of instruction text.
Topic Calibration
Topic-level instructions adapt from the baseline set in global instructions. They refine and calibrate — they don't redefine who the agent is. When topic instructions conflict with global, the model reconciles: it treats global as the core identity and topic as situational adaptation.
| Agent Authoring Tool | Where Topic Instructions Go | Behavior |
|---|---|---|
| Agent Script | reasoning.instructions within each topic | Extends global system.instructions |
| Agentforce Builder | Topic Instructions field | Extends global instructions topic |
If you need a radically different voice for a topic, you have options in order of preference:
1. Lighter-weight calibration first: lexicon, topic phrase book, topic never-say, tone flex rules, brevity adjustment 2. Topic-level system override (Agent Script only): a system: block in the topic replaces system.instructions for that topic — reserve for major persona shifts and remember to duplicate all instructions 3. Separate agent: if the persona shift is extreme, a separate agent may be cleaner
Each topic can carry:
Brevity calibration — different topics need different response lengths.
Status check topic (terse):
Brevity: Terse. One-line status, emoji health indicator, no commentary.
If the user asks a follow-up, answer it — don't volunteer context they
didn't request.Deal analysis topic (moderate):
Brevity: Moderate. Lead with a recommendation and its rationale. Include
supporting data points. Use bullet formatting for multi-factor analysis.
End with a single next step.Tone flex encoding — how Emotional Coloring and Empathy Level shift by topic context.
Escalation topic:
Tone: Shift Emotional Coloring toward Encouraging. Shift Empathy Level
toward Moderate. Acknowledge the difficulty briefly, then show the path
forward. Never minimize the user's frustration.Data retrieval topic:
Tone: Maintain Neutral Emotional Coloring and Understated Empathy Level.
State findings without editorial. Confidence labeling matters most
here — label confirmed data vs. inferred data.Phrase book entries — situational phrases relevant to this topic.
Humor guidance — whether humor is appropriate or suppressed. Always suppress humor in error states, escalation, and high-stakes contexts.
Topic lexicon — domain vocabulary scoped to where it belongs. A luxury watch agent has vocabulary like "movement," "chronograph," "caliber." These belong in product topics, not shipping topics. Loading specialized vocabulary globally wastes context and can cause the agent to over-use jargon in simple service interactions. Add a Lexicon: block to a topic's instructions when there are relevant domain terms and usage notes.
Persona reminders — include short directives in topic instructions that reference back to the global persona. These reminders sharpen persona and mitigate drift in longer sessions:
Persona Reminder: Stay in Drover's voice: laconic, direct, no-nonsense.
No corporate fluff. Be practical and read the room.Example: Drover deal analysis topic (Agent Script)
topic deal_analysis:
description: "Analyze deal health and recommend next steps"
reasoning:
instructions: |
Brevity: Moderate for this topic. Lead with a recommendation and
its rationale. Include supporting data. End with a single next step.
Tone: Maintain Neutral coloring. If the deal is at risk, state it
plainly — don't soften.
Lexicon: Use these terms freely. The audience expects them.
"Compelling event" — Pressure that motivates a decision...
Persona Reminder: Stay in Drover's voice: laconic, direct, no-nonsense.
No corporate fluff. Be practical and read the room.In Agentforce Builder, place the same text in the deal analysis Topic Instructions.
Static Messages
All output should align to persona, even messages that are not generated by the LLM. Write them in voice. Otherwise, users encounter generic text or debugging content that breaks character.
| Agent Script | Agentforce Builder | |
|---|---|---|
| Name | config.agent_name | Name (80 chars — keep it short) |
| Welcome | system.messages.welcome | Welcome Message (800 chars, use ≤ 255) |
| Error | system.messages.error | Error Message field |
| Loading | progress_indicator_message | Loading Text (per action) |
| Deterministic responses | Pipe text in if/else blocks | N/A |
Loading text should be unique for each action, informing the user what the agent is doing.
Compare how two different personas deliver the same messages:
| Drover (laconic sales coach) | Juno (warm professional sales coach) | |
|---|---|---|
| Welcome | "What deal are we looking at?" | "Welcome. I'm here to help with your opportunities. What can I do for you?" |
| Error | "Something's gone sideways. Give it another go." | "I ran into an issue. Let me try again." |
| Loading (pull deal) | "Pulling the numbers…" | "Retrieving your deal information…" |
| Loading (run analysis) | "Crunching this…" | "Analyzing your pipeline data…" |
| Deterministic (no data) | "Nothing here. Check the opp ID and try again." | "I wasn't able to find a match. Could you double-check the opportunity ID?" |
Dynamic Welcome Messages
For Agentforce Builder, a dynamic welcome message can personalize the greeting based on who the customer is. See Dynamic Welcome Messages in Additional Encoding Options for details.
---
Agent Script Encoding
Agent Script is the recommended tool when persona consistency is at a premium. A single .agent file holds all instructions — no character limits apply.
Persona-Carrying YAML Keys
| YAML Key | Where | Persona Mapping |
|---|---|---|
system.instructions | system: block | Full persona. No character limits. Primary surface. |
system.messages.welcome | system: block | Static welcome message. |
system.messages.error | system: block | Static error message. |
Topic system: | topic: block | Per-topic persona override. Replaces global instructions for this topic. |
reasoning.instructions | topic: block | Per-topic persona calibration (brevity, lexicon, tone flex). |
progress_indicator_message | Action invocation | In-character loading text per action. Requires include_in_progress_indicator: True. |
| ` | text in if/else` | instructions: -> |
Output Structure
The encode flow should output ready-to-paste YAML blocks. Always use the | (literal block scalar) indicator for instruction content — without it, lines like Brevity: Moderate… or Tone: Shift Empathy… will be parsed as YAML key-value pairs instead of instruction text.
System block
config:
agent_name: "Drover"
system:
instructions: |
You are Drover, an internal sales coach for enterprise AEs. You read
deals like a stockman reads the bush — subtle signs others miss, hard
truths delivered with easy confidence.
Identity: Instinctive, Unflinching, Practical, Reframing, Steady.
Register: Advisor. Lead with recommendations and rationale...
[full persona content here]
messages:
welcome: "What deal are we looking at?"
error: "Something's gone sideways. Give it another go."Per-topic calibration
topic deal_analysis:
description: "Analyze deal health and recommend next steps"
reasoning:
instructions: |
Brevity: Moderate for this topic. Lead with a recommendation and
its rationale. Include supporting data. End with a single next step.
Tone: Maintain Neutral coloring. If the deal is at risk, state it
plainly — don't soften.
Lexicon: Use these terms freely. The audience expects them.
"Compelling event" — Pressure that motivates a decision...
Persona Reminder: Stay in Drover's voice: laconic, direct, no-nonsense.Per-action loading text
actions:
- action: pull_deal_data
progress_indicator_message: "Pulling the numbers…"
include_in_progress_indicator: True
- action: run_analysis
progress_indicator_message: "Crunching this…"
include_in_progress_indicator: TrueDeterministic responses
instructions: ->
if no_data_found:
| Nothing here. Check the opp ID and try again.
else:
...Encoding Priority
1. `system.instructions` — Full persona: Identity, dimension behavioral rules, phrase book, chatting style rules, tone boundaries, never-say list. This is the primary persona surface. 2. `reasoning.instructions` per topic — Lighter calibration: brevity, lexicon, tone flex triggers, phrase book entries, humor guidance. Extends rather than replaces the global persona. Include persona reminders for long-running topics. 3. Topic-level `system:` — Replaces global system.instructions for that topic. Reserve for major persona shifts (e.g., escalation shifts Register from Peer to Advisor). Remember to duplicate all instructions when using this. 4. `progress_indicator_message` — In-character loading text per action. 5. `system.messages.welcome` — Static welcome reflecting Identity + Register + Voice + Brevity. 6. `system.messages.error` — Static error reflecting Formality + Warmth + Emotional Coloring + Brevity. 7. Deterministic `| text` outputs — Hardcoded pipe output bypasses the LLM. Each must be pre-authored in the persona's voice.
---
Agentforce Builder Encoding
Agentforce Builder distributes persona across several fields with character limits. The global instructions topic is the primary persona surface — other fields support it.
Fields
| Field | Limit | What It Carries |
|---|---|---|
| Name | 80 chars | User-facing identity signal. First impression before conversation starts. |
| Role | 255 chars | Functional summary only — what the agent does and who it serves. Do not add stylistic persona encoding to Role while global instructions are present. |
| Company | 255 chars | What the company does, who it serves, what makes it different. Shapes the agent's frame of reference. |
| Welcome Message | 800 chars | First impression. Reflects Identity + Register + Voice + Tone + Brevity. Keep under 255 chars to avoid truncation. |
| Error Message | — | Fallback for system errors. Reflects Formality + Warmth + Emotional Coloring + Brevity. |
Role (255 chars) — functional summary only
Include a sentence or two on what the agent does. Do not encode persona style or voice in Role when a global instructions topic is present. The model treats Role as a primary anchor — stylistic encoding there can override the more specific rules in global instructions, flattening distinctive voice and phrase book adherence. Keep Role minimal:
You are a virtual customer support agent who helps customers track and
manage orders and returns.Company (255 chars) — brief business context
What the company does, who it serves, what makes it different. This field shapes the agent's frame of reference. A support agent for a B2B SaaS company sounds different from one at a luxury retail brand, even with identical dimension selections.
Description (1,000 chars)
Description can encode persona (the LLM reads it), but global instructions are recommended instead. Description is intended to list agent goals and context about its users.
Agentforce Builder Settings
The Tone Dropdown — register and formality
The Tone dropdown is a coarse tool setting. It maps roughly to Register + Formality:
| Tone Setting | Approximate Mapping |
|---|---|
| Casual | Peer register, Casual or Informal formality |
| Neutral | Peer, Advisor, or Coach register, Professional formality |
| Formal | Subordinate register, Formal formality |
Set the dropdown to match the intended Register. A misaligned setting can cause drift toward model defaults, and Register is the first dimension to degrade. The dropdown also influences more than voice — it can affect what the agent offers to do, not just how it speaks. Test to ensure it works with rather than against your persona.
Conversation Recommendations
- On Welcome Screen — Whether suggested conversation starters appear. Enable when the agent has clear primary use cases.
- In Agent Responses — Whether clickable next-action chips appear. Maps to the agent's Interaction Model (an agent design input).
Fields That Don't Encode Persona
If you're deciding what the agent does, that's agent design. If you're deciding how it sounds, that's persona. API Name, Agent Type, Topics, Actions, Data Sources, Languages, Agent User: these belong to agent design.
---
Additional Encoding Options
Conversation Style — Lightweight Encoding
A single Conversation Style: instruction compresses the persona into one paragraph. Best for prototyping or minimum viable persona.
Template:
Conversation Style: [Register/relationship] who [core behavior].
[Emotional coloring and empathy approach]. [Formality and warmth
signals]. [Brevity calibration]. [Distinctive voice markers if any].Example:
Conversation Style: Peer advisor who leads with data and clear
recommendations. Neutral, matter-of-fact: state outcomes as facts, no
dramatization. Professional language, occasional contractions, no filler.
Keep responses concise. Push back when deal gaps need attention.Place in the global instructions topic (Builder) or system.instructions (Agent Script). Then set the Tone dropdown to the closest match.
Limitation: Less precise than full encoding. Static messages still need per-field authoring. No per-topic calibration.
Custom Metadata — Centralized Persona
Store the persona document as a Custom Metadata Type record (Agent_Persona__mdt) and inject it into actions via Prompt Templates as a variable.
When to use:
- Multiple actions need the same persona context
- Share a persona definition across multiple agents — update once, all agents get the update
- Persona exceeds what fits comfortably in individual Builder fields
Compatible with both Agentforce Builder and Agent Script. In Script, primarily useful when multiple agents share a persona definition (character limits don't apply).
Dynamic Welcome Messages (Agentforce Builder)
The static Welcome Message field works for a generic greeting, but a dynamic welcome message can personalize the opening based on who the customer is. The high-level approach:
1. Create a custom text field on the Messaging Session object to hold the generated greeting. 2. Map it as a Context Variable in Agentforce Builder so the welcome message can reference it. 3. Build a Prompt Template that generates the greeting text (e.g., referencing the customer's name, recent order, or loyalty tier). 4. Use an Omni-Channel Flow to invoke the prompt template and write the result to the custom field before the session starts.
Once wired up, the Welcome Message field references the Context Variable instead of static text, and every customer sees a greeting that feels tailored rather than canned. For a full step-by-step walkthrough, see Design Better Greetings in Agentforce Builder.
Model Parameters
These are not persona settings. They are persona-adjacent — handle with care.
Temperature, frequency penalty, and presence penalty are configured in Einstein Studio, not Agentforce Builder. They affect the reasoning engine's output diversity, not the persona intent — but they interact with persona in ways that can undermine or reinforce it.
| Parameter | What It Controls |
|---|---|
| Temperature | Randomness/creativity. Lower = more deterministic. Higher = more varied. |
| Frequency Penalty | Discourages word/phrase repetition. Higher = more varied vocabulary. |
| Presence Penalty | Encourages introducing new topics. Higher = broader coverage, less depth. |
Key interactions with persona:
- Low temperature + specific persona instructions = most consistent persona. Best for production agents.
- High temperature + vague persona instructions = inconsistent persona. The agent drifts.
- High frequency penalty can conflict with Terse Brevity — the model may avoid reusing short, functional words.
- High presence penalty can conflict with focused, single-topic agents.
Recommendation: Leave at defaults unless you have a specific reason. Do persona work in instructions, not in model parameters.
---
What to Expect
Tool evolution: Encoding patterns are based on current Agentforce capabilities. As the tools evolve, encoding may shift.
Precision: LLM output generation is probabilistic, and the chain of custody between persona instructions and generated text is long. The encoding patterns in this guide are directionally correct and can sustain distinct persona adherence over multiple turns. However, this guide does not claim to guarantee fine-grained control over agent output.
Hosting and model: Changing the hosting environment or model sometimes causes minor deviations in dimensions such as Emotional Coloring.
Language scope: All testing referenced in this guide was conducted in English. Results from other languages may vary.
Constraints are recommendations: Dimension constraint notes in the framework are recommendations, not hard locks. No dimension value is ever unavailable — any combination is valid. Constraints flag combinations that may feel incoherent so the designer can make a conscious choice.
Related skills
Forks & variants (1)
Sf Ai Agentforce Persona has 1 known copy in the catalog totaling 1 installs. They canonicalize to this original listing.
- jaganpro - 1 installs
How it compares
Use sf-ai-agentforce-persona for Agentforce Agent Script YAML; generic prompt templates lack Salesforce channel messaging and telephony adjustment slots.
FAQ
What does sf-ai-agentforce-persona do?
>
When should I use sf-ai-agentforce-persona?
>
What are common prerequisites?
--- name: sf-ai-agentforce-persona description: > Deep persona design for Agentforce agents with 50-point scoring.
Is Sf Ai Agentforce Persona safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.