Skip to content
Development
Skill

/agentforce-bot-upgrade

Use this skill to Upgrade Einstein Bots into Agentforce agents end-to-end in a single pass, orchestrating per-bot Agent Spec generation, planner reconciliation across bots, agentforce-generate authoring, and post-conversion .agent enhancements. TRIGGER when: user asks to

From plugin
sf-skills
1.1k200 skills6 agents15 commands4 MCP

Claude Code

$ npx -y skills add forcedotcom/sf-skills --skill agentforce-bot-upgrade --agent claude-code

SKILL.md

agentforce-bot-upgrade.SKILL.md
name: agentforce-bot-upgrade
description: "Use this skill to upgrade Einstein Bots into Agentforce agents end-to-end in a single pass, orchestrating per-bot Agent Spec generation, agentforce-generate authoring, and post-conversion .agent enhancements. TRIGGER when: user asks to migrate, upgrade, or convert one or more Einstein Bots (BotDefinition/BotVersion chatbots) to Agentforce agents; runs a multi-bot bot-to-agent upgrade; needs Einstein Bot metadata turned into Agent Spec handoffs and generated .agent agents; convert bots to agents; upgrade my service bots; move bots to Agentforce. DO NOT TRIGGER when: user already has an approved Agent Spec and only wants direct .agent authoring, deploy, test, or observe flows; user wants to migrate or upgrade an EXISTING Agentforce agent from a legacy GenAiPlannerBundle to an NGA aiAuthoringBundle (that is agentforce-generate's 'Migrate a Legacy Agent to Agent Script' flow, not an Einstein Bot upgrade); the request is unrelated to Einstein Bot migration."
argument-hint: "[--mode <online|offline>] [--org-alias <org-alias> --bots <bot1:v1,bot2:v2,...> | --offline-dir <offline-dir> [--bots <bot1,bot2,...>]] [--interactive <true|false>]"
metadata:
  version: "1.0"
  domains: ["Agentforce"]
  minApiVersion: "63.0"
  relatedSkills:
    - "agentforce-generate"
  cliTools:
    - tool: ["jq"]
      semver: ">=1.6.0"
    - tool: ["node"]
      semver: ">=20.0.0"
    - tool: ["npm"]
      semver: ">=9.0.0"
    - tool: ["sf"]
      semver: ">=2.0.0"

Einstein Bot Upgrade Orchestrator

Purpose

Run a multi-bot upgrade-and-handoff cycle. Each bot is converted into its own Agentforce agent; bots are processed independently and never combined or restructured across one another:

1. Parse and validate bot/version pairs from `--bots` 2. Follow [Generate Agent Spec Reference](references/generate-agent-spec.md) per bot-version pair (parallelizable) 3. `/agentforce-generate` per Agent Spec (parallelizable) 4. Post-conversion enhancement pass per generated Agent Script (parallelizable) 5. Consolidated run report

Run Completion Contract

The skill run is complete only after Step 4 and Step 5 have both been executed for every bot that reached Step 3. Generating the Agent Spec (Step 2) or the `.agent` file (Step 3) is NOT a completed run.

  • A run is complete only when `report.md` has been written (Step 5). The only other way to end a run is a hard stop listed under Interactive Mode.
  • None of these end the run:
  • the Step 2 deliverables;
  • `/agentforce-generate` finishing or printing its own completion summary;
  • an approval or release gate inside `/agentforce-generate`;
  • the Step 4 per-agent summary;
  • a failed compile or a failed publish.

Record each outcome and continue to the next step.

  • Online mode: Step 4 always ends with a publish (commit) attempt, or a recorded reason why no attempt was made (for example, compile failed). Every attempt gets a `publish-audit.jsonl` record. Never activate.
  • If a step fails for a bot, record the failure and still run Step 5. `report.md` is written for partial runs too.
  • Do not end your turn while any step from 1 to 5 is still pending. If you send a progress update, send the next tool call in the same response.

**Scope — this skill only converts Einstein Bots** (`BotDefinition`/`BotVersion` chatbots) into new Agentforce agents. It does NOT migrate an existing Agentforce agent from a legacy `GenAiPlannerBundle` to an NGA `aiAuthoringBundle` — for that, use the **agentforce-generate** skill's "Migrate a Legacy Agent to Agent Script" flow.

Start-of-Run Disclaimer

Display this disclaimer to the user as the very first output of every invocation, in both online and offline mode, before Missing Input Handling, Step 1, or any tool call, file read, or org query. Rules:

1. Output the block between `BEGIN DISCLAIMER` and `END DISCLAIMER` verbatim as rendered Markdown — not inside a code block, not summarized, reworded, or reordered. Keep every emoji marker; they are the color coding that draws the user's attention. 2. Display it exactly once per invocation (not once per bot). 3. Do not wait for an acknowledgement or end your turn after displaying it; continue the run in the same response with Missing Input Handling and Step 1. When `--interactive=false`, still display it.

BEGIN DISCLAIMER

> ## ⚠️ IMPORTANT — Read Before You Upgrade > > This upgrade uses generative AI to turn your Einstein Bot's dialogs, intents, and variables into an Agentforce agent with subagents and actions. The result is a **committed agent version that has not been activated**. Review and test it before you activate it. > > ### 🔵 How your bot's design is translated > - **Menus become intent-based routing.** The agent doesn't reproduce menus and option-driven navigation. It identifies what the customer wants and routes to the right subagent. Each menu option's outcome is kept, but the step-by-step menu flow is not. > > ### 🔴 Not converted > - **Bot goals.** Agents don't need them. > - **Some action steps:** steps that produce no output, exist only to move between dialogs, or write feedback logs. > - **Actions other than Apex classes and flows**, such as object search. You can add these to the agent as custom actions. > - **Menus in welcome messages.** Use pre-chat configuration to collect routing information up front. > - **Option buttons for questions with more than 11 options.** The options aren't shown as buttons. > - **Rich content and messaging components.** Use adaptive response formats to format the agent's responses. > - **File attachments**, sent or received. > - **Steps that change the conversation language** partway through a conversation. > > ### 🟡 Configure after the upgrade > - **Agent user.** Assign a user to the agent. > - **Channels and Omni-Flows.** Connect the agent to your customer channels. > > ### 🟢 Recommendations > - Configure intents along with their descriptions in your bot, to match the corresponding

Read more
@forcedotcom
Ships withsf-skills

This repository provides Salesforce agent skills, plugins, and sample apps for building applications.

1.1k200 skills6 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.1k
Star history of forcedotcom/sf-skills on GitHub, a chart by star-history.com

Other skills on sf-skills.

agentforce-observe

agentforce-observe

Analyze production Agentforce agent behavior using session traces and Data Cloud, and manage Agent Health Monitoring (AHM)…

agentforce-test

agentforce-test

Write, run, and analyze structured test suites for Agentforce agents — functional AND security. TRIGGER when: user writes or…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about agentforce-bot-upgrade.

Which coding agents can use agentforce-bot-upgrade?
agentforce-bot-upgrade installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.