Write Retell-style voice or chat agent system prompts (single bot, or orchestrator plus sub-agents) in the Operator Base house format, with the Selling Method block for sales bots. Use when the user wants a new client agent prompt or a multi-bot routing setup; not for small wording edits.
Scanned 9/27/2026
npx -y skills add zalogarcia/zalo-claude-code-setup --skill voice-agent-forge --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Voice Agent Forge?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/zalogarcia-voice-agent-forge)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: voice-agent-forge
description: Write Retell-style voice or chat agent system prompts (single bot, or orchestrator plus sub-agents) in the Operator Base house format, with the Selling Method block for sales bots. Use when the user wants a new client agent prompt or a multi-bot routing setup; not for small wording edits.
---
Forge voice (Retell) and chat (ADRS) agent system prompts in Operator Base house format. One client = an orchestrator bot plus N specialized sub-agents the orchestrator transfers to. This skill gives you the exact section taxonomy, the voice-specific rules, and the generation discipline so every bot comes out in the same shape.
## When to invoke
- "Write/forge a voice agent prompt for [client]" / "build a Retell agent" / "make the AI receptionist"
- "Create the orchestrator + sub-agents" / "I need 4 bots for this client" / "route callers to the right department"
- "Turn this onboarding submission into a chatbot prompt" (the Client Onboarding → Forge seed flow)
- Any time you're producing the `<identity>`-tagged prompt that goes into Retell, Prompt Studio, or an n8n ADRS workflow
Skip for: editing an existing prompt's wording (just edit the file), one-line tone tweaks, or non-conversational LLM prompts (summarizers, classifiers).
## Origin
This is the game-app "Prompt Forge" promoted into Claude Code. Canonical references (read them if present, they are the source of truth for wording):
- House structure & voice rules: `~/dev/90-day-cmaa-game-app/supabase/functions/demo-retell-setup/templates.ts` (`ORCHESTRATOR_GLOBAL_PROMPT`, `ENG_LLM_PROMPT`, `ESP_LLM_PROMPT`)
- The in-app Forge system prompt (repo-tracked source of truth for the `prompt_forge_system_prompt` app_settings row — the code `DEFAULT_SYSTEM_PROMPT` in useAnthropicChat.js is only a minimal fallback): `~/dev/90-day-cmaa-game-app/docs/prompt-forge/system-prompt.md`
- **The Selling Method block (canonical, paste-verbatim artifact):** `~/Documents/Zalo Content/Sales System/agent-prompt-block/SELLING-METHOD.block.md` — 530-conversation-measured; its README documents the evidence and deploy gates
- Onboarding → Forge seed contract: `~/dev/90-day-cmaa-game-app/src/components/Toolkit/ClientOnboarding/buildForgeSeedFromSubmission.js`
If those files aren't on disk, this skill is self-contained — the skeleton and rules below are the full spec.
## Generation discipline (the Forge contract)
1. **Ground everything in supplied context.** Pull company identity, services, hours, regions, pricing, FAQs from what the user gave you (onboarding submission, website scrape, email brief, transcript).
2. **Never invent prices, commitments, dates, or policies** not grounded in the context. If a value is unknown, the bot _collects the lead and sends a link / hands off_ — it does not fabricate. (e.g., unknown exhibitor rates → "I'll text you the exhibitor info" via the SMS tool, not a made-up number.)
3. **Every prompt includes:** Identity, Voice/Tone, the Offering/Services, qualification criteria, FAQs/knowledge, and Guardrails (out-of-scope → human handoff).
4. **Tools are external.** Never write real URLs or phone numbers as links. Reference _using_ a tool ("I'll send you the calendar link now") — the platform owns the actual send. Booking, SMS, email, agent-transfer, and human-handoff tools are configured in Retell/the platform, not in the prompt.
5. **Out-of-scope → hand off, don't guess.** When a question falls outside the grounded context, escalate to the human team.
6. **Sales-mission bots get the Selling Method block VERBATIM.** A sales-mission bot is any bot whose job moves someone toward a purchase — outbound sales, inbound lead qualification, revival/re-engagement, and appointment-setters whose booking IS the sales next step. Insert `~/Documents/Zalo Content/Sales System/agent-prompt-block/SELLING-METHOD.block.md` word-for-word as the `<selling_method>` section (client bots get the FULL block, fact-sourcing rules included — those rules only get adapted in demo contexts). Exactly two permitted adaptations: (a) `set_dnd` — Delta Agents platform bots HAVE the tool, keep those sentences exactly; only swap for the platform's real opt-out mechanism when the target platform genuinely lacks one; (b) voice bots — adapt the handful of text-channel phrases to speech ("in writing" → "on a call", "scroll up and reread" → "remembers what you said", "block a number" → "hang up and block a number"). Pure support bots, receptionists/after-hours catch-alls, and post-purchase bots do NOT get the block or an objection database — on those it is pure cost and distorts behavior. A routing-only orchestrator does not get it; an orchestrator that itself sells does.
7. **Objection handlers are generated per client, never canned.** After the block, write `<objection_handling_database>` as 8-15 objections this client's prospects actually raise — composed from the block's ten patterns + the client's niche, offer, pricing, and stated objections — each response following the four-step move (accept briefly → exit out loud → one diagnostic question → concrete answer + next step) and obeying the block's "Never do these". No stock script libraries, no invented statistics/success rates/social proof.
## The house format (section order is fixed)
Emit sections in this exact order. Orchestrators and sub-agents share the skeleton; the differences are noted.
```
<identity> Named persona, role, default tone, 2 good/bad response examples. Tone tuned to caller type.
<company_identity> Shared block — repeat verbatim in EVERY bot so each is self-contained (name, founder, phone spelled in words, email "at … dot …", website, what the company does, signature programs).
<goal> Primary objective + "Success looks like" bullets + strategic approach.
• Orchestrator: identify intent → route to the right sub-agent (list the categories).
• Sub-agent: the qualification criteria + actions for THIS caller type.
<context> {{contact_first_name}}, {{contact_id}}, {{date_context}}; business hours + timezone;
for sub-agents: note they can transfer BACK to the orchestrator or sideways to another sub-agent.
<important_information>
Concise rule; match energy. AI DISCLOSURE (tell the truth if asked, offer human).
CONVERSATION ENERGY MANAGEMENT (5 energy types).
<conversation_flow_flexibility> … adaptive-framework block …
MAXIMUM ATTEMPT RULES (same question 3× → human handoff; routing 2× max;
objections defer to the Selling Method three-attempt budget — never a separate "price 2× max" rule).
TOOLS ARE EXTERNAL (no raw URLs; reference using the tool).
CRITICAL GUIDELINES (never break character; redirect off-scope).
<conversational_style_guideline>
VOICE-SPECIFIC RULES (verbatim block below) + the Words-to-Avoid list.
<conversation_steps> Numbered flow. Sub-agents: warm pickup (acknowledge the transfer, don't re-greet from scratch)
→ qualification (one question at a time) → send links/info via tools → booking sequence
→ CRM add / reminder offer → confirm. Orchestrator: greeting → identify intent → route.
<selling_method> SALES-MISSION BOTS ONLY (see discipline #6): the Selling Method block, verbatim, with only the
two permitted adaptations. Omit entirely for support/receptionist/routing-only/post-purchase bots.
<objection_handling_database>
SALES-MISSION BOTS ONLY: 8-15 niche-specific handlers generated per discipline #7 —
the client's real objections in the four-step move shape. Never a canned library.
<knowledge_database> Grounded facts: schedule, programs, regions, rates-by-link, etc. Spell dates/numbers in words.
```
### Verbatim voice block (drop into every `<conversational_style_guideline>`)
```
Ask only one question at a time and wait for response — never bundle questions.
Use natural filler words ("umm", "so") very sparingly, max once every two interactions.
Keep interactions brief with short sentences.
Write symbols as words: "three dollars" not "$3", "at" not "@".
Read phone numbers in natural 3-3-4 groupings, in full words: "five five five - one two three - four five six seven".
When spelling names: "First name is Jane, spelled J A N E."
Read dates naturally in full words: "Tuesday the eighteenth at ten am".
Never use em dashes when speaking.
Acknowledge info the caller already shared; never ask for it twice.
```
### Words to Avoid (paste into the style block)
Accordingly, Additionally, Arguably, Certainly, Consequently, Hence, However, Indeed, Moreover, Nevertheless, Nonetheless, Notwithstanding, Thus, Undoubtedly, Adept, Commendable, Dynamic, Efficient, Ever-evolving, Exciting, Exemplary, Innovative, Invaluable, Robust, Seamless, Synergistic, Thought-provoking, Transformative, Utmost, Vibrant, Vital, Efficiency, Innovation, Institution, Integration, Implementation, Landscape, Optimization, Realm, Tapestry, Transformation, Aligns, Augment, Delve, Embark, Facilitate, Maximize, Underscores, Utilize, A testament to…, In conclusion…, In summary…, It's important to note/consider…, It's worth noting that…, On the contrary.
## Orchestrator + sub-agent architecture
- **No IVR.** Never tell callers to "press 1." The orchestrator asks one open question, infers intent, and transfers. (Per client preference — IVR is outdated.)
- **Seamless handoff both ways.** Sub-agents can transfer back to the orchestrator or sideways to a sibling sub-agent if the caller's need changes. State this in each sub-agent's `<context>` and `<conversation_steps>`.
- **One persona per bot, consistent across the set.** Give each bot a distinct, on-brand first name; the orchestrator says "let me connect you with someone who specializes in…". Pick voices/names that fit the brand.
- **Shared blocks stay identical.** `<company_identity>`, the voice block, and the Words-to-Avoid list must be byte-identical across all bots in a set — define once, paste everywhere. Divergence here is the #1 quality bug.
- **Add-on tools** (lead scoring, CRM push, reminder-text scheduling) are referenced as external tools the same way booking/SMS are — describe WHEN to fire them, never implement them in-prompt.
## Output shape
- Write each bot to its own file: `<client>/voice-agents/<NN>-<agent-name>.md`. Add a `00-orchestrator.md` and a `README.md` mapping the routing.
- After writing, report a one-line manifest: `Forged N bots: orchestrator + [list]. Shared blocks verified identical.`
- Do NOT paste full 250-line prompts back into chat — point to the files and summarize each bot's qualification criteria in 1-2 lines.
## Anti-patterns
- ❌ Inventing prices/rates/dates to fill a section — collect the lead and send a link via the SMS tool instead.
- ❌ Canned objection scripts or a stock objection database: objection handling comes from the Selling Method block plus per-client handlers (discipline #7). If you find yourself pasting an objection response you didn't derive from this client's context, stop.
- ❌ Pasting `<selling_method>` into a support, receptionist, or routing-only bot — the block itself documents this as pure cost that distorts behavior.
- ❌ Paraphrasing or trimming the Selling Method block — it is a measured artifact; verbatim or absent, nothing in between (the two platform adaptations in discipline #6 are the only exceptions).
- ❌ Writing real URLs or phone numbers as clickable links inside the prompt — tools are external; reference using them.
- ❌ IVR "press 1 for…" menus — the client wants natural conversation.
- ❌ Letting `<company_identity>` or the voice block drift between bots in the same set — paste identical.
- ❌ Sub-agent that re-greets with the full "Thank you for calling…" after a transfer — it should warmly pick up mid-conversation.
- ❌ Using any word from the Words-to-Avoid list in the prompt's own example lines.
- ❌ Fanning out one parallel subagent per bot when consistency matters — the shared blocks will diverge. Write the set in one pass, or define shared blocks first and pass them verbatim to each writer.
## Edge cases
- **Bilingual client** → mirror each bot into a second language agent (the templates ship `ENG_LLM_PROMPT` + `ESP_LLM_PROMPT`); keep the structure identical, translate the spoken lines, keep variables and tool references in place.
- **Onboarding submission as input** → follow the `buildForgeSeedFromSubmission` contract: treat uploaded docs as primary source for tone/FAQs/services; never invent beyond them.
- **Unknown qualification answer matters for routing** → ask one clarifying question, cap at two, then hand to the human team.
- **Single-bot client (no routing)** → produce just the one agent in the same house format; skip the orchestrator.
## Pair with
- `commit-with-heredoc` — commit the forged prompt set following convention.
- The game-app Prompt Studio / Conversation Bench — paste a forged prompt there to bench-test it against generated personas before shipping to the client.
- `/brainstorm` — when the qualification criteria or routing logic for a complex client isn't obvious yet.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!