name: prompt-template-versioning description: "Lifecycle management for Prompt Builder templates: version, test, promote, roll back via CMDT-backed bindings. NOT for authoring initial templates or generic prompt engineering." category: agentforce salesforce-version: "Spring '25+" well-architected-pillars:
- Operational Excellence
- Reliability triggers:
- "how do I version a prompt builder template"
- "rollback a prompt in production"
- "a/b test a prompt variant"
- "audit which prompt was live last week" tags:
- agentforce
- prompt-builder
- lifecycle
- versioning inputs:
- "Prompt template name"
- "release cadence"
- "test cases" outputs:
- "Versioning policy doc"
- "promotion checklist" dependencies: [] version: 1.0.0 author: Pranav Nagrecha updated: 2026-04-28
Prompt Template Versioning
Prompt Builder templates drift because authors iterate in Setup without a change-log or rollback plan. This skill defines a three-stage lifecycle (Draft → Candidate → Active) stored as custom-metadata pointers, promoted with a signed-off checklist, and rolled back via the same CMDT.
Recommended Workflow
- Create a CMDT
Prompt_Template_Binding__mdtwith fields DeveloperName, Target_Slot__c (e.g. 'SalesEmail'), Version__c, Active__c. - Author new prompt versions in Setup with suffixed DeveloperNames (
SalesEmail_v3,_v4). - Update consumers (Flow/Apex/Agent) to read the DeveloperName from
Prompt_Template_Binding__mdtat invocation — never hardcode the template name. - Run the fixture test set against
_v4; record metrics (accuracy, latency, token cost) in a release note. - On promotion: flip Active__c on CMDT from
_v3row to_v4row; on rollback, reverse. Both are deploy-validated CMDT changes — reviewable in git.
Key Considerations
- Prompt Builder has no native version history — once you save, the old text is gone. The CMDT pointer + named versions give you git-backed history.
- Flow-referenced prompts are bound by DeveloperName; if you rename, the Flow breaks. Use the CMDT layer of indirection.
- Retest whenever the underlying model changes (model upgrades happen transparently).
Worked Examples (see references/examples.md)
- CMDT-backed template binding — Sales email prompt updated weekly.
- Canary rollout via user-hash bucketing — Shipping
_v4to 10% of reps before going full.
Common Gotchas (see references/gotchas.md)
- Setup UI 'Save' loses the prior text — You can't compare v3 vs v4 without an external copy.
- Model silently upgrades — Identical prompt, different output next week.
- Bound variable schema change — v4 needs a new {{record.Field__c}} that doesn't exist in your sandbox.
Top LLM Anti-Patterns (full list in references/llm-anti-patterns.md)
- Hardcoding template DeveloperName in Flow/Apex — rollback requires redeploy.
- Editing prompts in place — no diff, no rollback.
- Skipping fixture tests 'because the change is small' — prompts amplify small changes.
Official Sources Used
- Agentforce Developer Guide — https://developer.salesforce.com/docs/einstein/genai/guide/agentforce.html
- Einstein Trust Layer — https://help.salesforce.com/s/articleView?id=sf.generative_ai_trust_layer.htm
- Invocable Actions (Apex) — https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_invocable_action.htm
- Agentforce Testing Center — https://help.salesforce.com/s/articleView?id=sf.agentforce_testing_center.htm