agentforce-bot-upgrade について
Einstein Bots を Agentforce エージェントに変換するスキルです。Agent Spec の生成、エージェント作成、変換後の拡張を行い、オンラインの org とオフラインディレクトリに対応します。複数 bot の場合は集約とプランナー処理も実行します。
主な機能
- 01オンラインまたはオフラインディレクトリの bot を処理
- 02bot とバージョンの作業項目を検証
- 03各 bot の Agent Spec を生成
- 04複数仕様の計画と調整
- 05エージェント生成と変換後の拡張を実行
- 06統合実行レポートを作成
活用シーン
- 01選択した Einstein Bot バージョンをエージェントに変換
- 02オフラインディレクトリ内の bot エクスポートを変換
- 031 回の実行で複数 bot の変換を調整
- 04生成した仕様、エージェント、拡張状況を追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill agentforce-bot-upgradeインストール後、Claude Code で/agentforce-bot-upgradeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/extraction-blueprint.mdgenerate-agent-spec.mdhandoff-output-format.mdinput-contract.mdmapping-rules.mdplanner-workflow-reference.mdpost-conversion-enhancements-reference.mdquality-checklist.mdsf-cli-bot-reference.md詳細
Einstein Bot Upgrade Orchestrator
目的
複数のボットのアップグレードと引き継ぎのサイクルを実行します。
--botsからボットとバージョンのペアを解析して検証します- ボットとバージョンのペアごとに[Generate Agent Spec Reference](references/generate-agent-spec.md) に従います(並列実行可能)
- 生成されたすべての Agent Spec を必要とする集約ステップを実行します
- Agent Spec ごとに
/agentforce-generateを実行します(並列実行可能) - 生成された Agent Script ごとに変換後の拡張処理を実行します(並列実行可能)
対象範囲 — このスキルが変換するのは Einstein Bot のみです(BotDefinition/BotVersion チャットボット)を、新しい Agentforce エージェントに変換します。既存の Agentforce エージェントをレガシーの GenAiPlannerBundle から NGA の aiAuthoringBundle に移行するものではありません。その場合は、agentforce-generate スキルの「レガシーエージェントを Agent Script に移行する」フローを使用してください。
入力
入力:
--mode <online|offline>は省略可能です。省略した場合のデフォルトはonlineです。mode=onlineの場合、次が必須です。--org-alias <org-alias>--bots <bot1:v1,bot2:v2,...>
mode=offlineの場合、次が必須です。--offline-dir <offline-dir>
--interactive <true|false>は省略可能です。省略した場合のデフォルトはtrueです。
必須入力が不足している場合は、以下の「入力不足の処理」および「対話モード」のルールに従ってください。
対話モード
--interactive は、実行中にスキルがユーザー入力を求めて一時停止するかどうかを制御します。
--interactive true(デフォルト):このスキルと参照先で説明されているとおり、曖昧さ、未解決の質問、承認ゲートを解消するためにユーザーに質問します。--interactive false:自律的に実行します。いかなる判断時点でもユーザーに質問してはいけません。未解決の質問、曖昧さ、承認ゲートにはすべて、文書化された推奨デフォルトまたは解決策を適用し、自動適用した判断を実行成果物(Agent Spec、未解決の質問、抽出サマリー)に記録します。質問せずに許可されるハードストップは、安全な推奨デフォルトがない、不足している、または矛盾している入力に限られます。これには、必須の起動入力(オンラインの場合は--org-alias/--bots、オフラインの場合は--offline-dir)が不足している場合、ボットが見つからない場合、同じボットに複数のバージョンが指定されている場合が含まれます。この場合は問題を報告し、質問せずに停止してください。
有効な --interactive の値を、ボットごとの Generate Agent Spec ワークフロー(ステップ 2)、プランナーワークフロー(ステップ 3)、変換後の拡張処理(ステップ 5)に引き継いでください。
入力不足の処理
ステップ 1 の前に、不足している必須の起動入力を解決してください。
- オンラインモード —
--org-aliasが指定されていない場合。 ボット一覧の取得を試みる前に解決してください(一覧の取得には対象 org が必要です)。- 対話モード:ログイン済み org の利用可能なエイリアスを一覧表示し、対象 org をユーザーに選択してもらいます。SF CLI Bot Reference の SF CLI パターンを使用してください。
- 非対話モード:不足している入力として
--org-aliasを明示したエラーで停止してください(質問も一覧表示も行わないでください)。
- オンラインモード — ボット名とバージョン(
--bots)が指定されていない場合。- 対話モード:
--org-aliasを対象 org として、org 内のすべてのボットとそのバージョンを一覧表示し、エージェントに変換するボット/バージョンの項目をユーザーに選択してもらいます。SF CLI Bot Reference のBotDefinitionとBotVersionのクエリパターンを使用してください。すべてのボットとバージョンを列挙するには名前/バージョンのフィルターを省略します。結果を提示し、ユーザーの選択から--botsの対象を作成してください。 - 非対話モード:不足している入力として
--botsを明示したエラーで停止してください(質問も一覧表示も行わないでください)。
- 対話モード:
- オフラインモード —
--offline-dirが指定されていない場合。- 対話モード:ユーザーに
--offline-dirのパスを指定してもらい、その後続行します。 - 非対話モード:不足している入力として
--offline-dirを明示したエラーを出して停止してください(質問はしないでください)。
- 対話モード:ユーザーに
参照資料
実行中は、次の参照ファイルを使用してください。
- SF CLI Bot Reference
- Generate Agent Spec Reference
- Planner Workflow Reference
- Post-Conversion Enhancements Reference
- Extraction Blueprint
- Input Contract
- Mapping Rules
- Handoff Output Format
- Quality Checklist
実行契約
ステップ 1:--bots の解析と検証
次の順序でステップ 1 を実行してください。
- モードを解決します。
--modeが省略された場合は、onlineを使用します。
- 今回の実行を新規に開始します。
- 以前の実行で既に生成された出力を検出、確認、再利用しないでください。
- 今回の実行コンテキストをクリーンなものとして扱ってください。
- 今回の実行フローで生成された成果物のみを使用してください。
- 初期ワークロードリストを作成します。
mode=online:--botsを読み取り、カンマで分割します。mode=offline:<offline-dir>をスキャンし、直下のサブディレクトリをボットのワークロードルートとして収集します。
- 入力形式を検証します。
mode=online:各--botsトークンが<bot-name>:<version>に一致する必要があります。mode=offline:ボットのサブディレクトリが少なくとも 1 つあることを確認します。ない場合は停止します(対話モードではユーザーに確認し、非対話モードでは「対話モード」のルールに従って明示的なエラーを出して終了します)。
- ワークロードエントリを正規化します。
mode=online:{bot_name, bot_version}エントリを作成します。mode=offline:{offline_bot_dir}エントリを作成します(サブディレクトリ構造から推定可能な場合は、推定したボット名とバージョンを記録します。推定できない場合は、名前のないエントリとして処理を続けます)。
- ボットごとに 1 つのバージョンのみを許可するルールを適用します(オンラインモード)。
- 同じ
bot_nameが複数のバージョンで指定されている場合は停止します(対話モードではユーザーに確認し、非対話モードでは「対話モード」のルールに従って明示的なエラーを出して終了します)。
- 同じ
- オフラインボットのフィルターを適用します。
mode=offlineで--botsが指定されている場合、検出したサブディレクトリのフィルターとしてのみ--botsを使用します。オフラインで必須の入力として扱わないでください。
- ステップ 1 の出力を保存します。
- 検証済みのワークロードリストを保存し、ステップ 2 の並列実行に引き継ぎます。
ステップ 2:Einstein Bot のアップグレードを実行(ボットとバージョンの組み合わせごと)
Generate Agent Spec Reference のエージェント仕様生成ワークフローを、ボットとバージョンの組み合わせごとに実行します。
--mode <online|offline>(省略時のデフォルトはonline)- モードごとに必要な入力:
- online →
--org-alias、--bot、--bot-version - offline →
--offline-dir
- online →
--interactive <true|false>(オーケストレーターで有効な値をそのまま渡します。デフォルトはtrue)
並列化ルール:
mode=onlineでは、ボットとバージョンの各ペアは独立しているため、呼び出しを並列で実行します。mode=offlineでは、ステップ 1 で検出したすべてのボットサブディレクトリに対して、Generate Agent Spec Reference のワークフローを並列で実行します。- 呼び出しごとに
--mode offlineと--offline-dir <bot-subdirectory-path>を渡します。
- 呼び出しごとに
ファイルの競合を避けるため、各呼び出し(オンライン/オフライン)には分離された作業ディレクトリを使用してください。
必須ルール:
- このステップを省略しないでください。
ステップ 3:集約とプランナーステップ(条件付き)
すべてのアップグレード呼び出しが完了したら:
{bot_name, bot_version, run_project_dir, agent_spec_path}の統合リストを必ず作成します。- 失敗または未完了のアップグレード実行のリストを必ず作成します(該当する場合)。
- 有効な Agent Spec エントリのみを含む、オーサリング準備完了の初期リストを必ず作成します。
- 各エントリには、
{bot_name, bot_version, run_project_dir, agent_spec_path, handoff_json_path, open_questions_path}を含める必要があります。
- 各エントリには、
- bot の総ワークロード数が 1 より大きい場合:
- プランナーワークフローのリファレンス のプランナーワークフローを、以下を使用して実行します。
- オーサリング準備完了リストのすべての
agent_spec_path値をspec_pathsとして使用 - オーケストレーターの作業ディレクトリを
working_dirとして使用 - オーサリング準備完了リストの各エントリに関連付けられた spec ごとの成果物:
handoff_json_path(handoff JSON)とopen_questions_path(未解決の質問)
- オーサリング準備完了リストのすべての
<orchestrator working directory>/bot-upgrade-planner-output.jsonに出力ファイルを必ず作成します。bot-upgrade-planner-output.jsonを読み取り、以下を適用します。specs_changed=trueの場合:プランナーのフィールド(updated_spec_path、run_project_dir、handoff_json_path、open_questions_path)を使用して、オーサリング準備完了リストのエントリを置き換えます。specs_changed=falseの場合:元のオーサリング準備完了リストを変更せずに保持します。
- プランナーワークフローのリファレンス のプランナーワークフローを、以下を使用して実行します。
- bot の総ワークロード数が 1 の場合:
- プランナーワークフロー全体をスキップします。
- 元のオーサリング準備完了リストを変更せずに保持します。
プランナー出力の要件:
- ブール値の
specs_changed - 以下のエントリを含む
updated_specs配列:original_spec_pathupdated_spec_pathrun_project_dirhandoff_json_pathopen_questions_path
specs_changed=falseの場合、updated_specsは空である必要があります。
ステップ 4:Agentforce-Generate を呼び出す(Agent Spec ごと)
最終的なオーサリング準備完了リスト(ステップ 3 のプランナーとの照合後)の各エントリについて:
/agentforce-generateを呼び出す前に、以下の推奨事項を生成された呼び出しコンテキストに追加します。- このオーケストレーション実行では、Agent Script のバージョンを有効化しないでください。
- ドラフトの反復が必要です。
.agentの生成、検証、デプロイ、プレビューでのテストは許可されています。 - ユーザーがリリースを明示的に求めない限り、有効化は延期してください。
- 最終的なオーサリング準備完了エントリから有効な
run_project_dirを解決します。 <run_project_dir>/agentforce-generate-invocation-prompt.mdを最後まで読みます。- ステップ 3 でプランナーによって更新された spec パスまたは成果物がある場合は、spec、handoff、未解決の質問の参照が更新後のファイルを指すよう、呼び出しコンテキスト内のパスを置き換えます。
- プランナーによって
run_project_dirも変更された場合は、プロンプトおよび出力契約のパスを解決する際に、更新後のrun_project_dirを使用します。
- プランナーによって
- 元の生成プロンプトに含まれる、パス以外のすべての指示を変更せずに維持します。
- 解決済みの呼び出しコンテキストを使用して
/agentforce-generateを呼び出します。 <run_project_dir>/agentforce-generate-output-contract.mdを読み、指定どおりに出力を取得します。
並列処理のルール:
- 各実行は独立しているため、Agent Spec ごとに
/agentforce-generateを並列で呼び出します。
出力契約に基づく取得ルール:
- 必須フィールドおよび成果物については、出力契約を正式な基準として扱います。
- 契約のフィールドが不足している場合は、ステータスを部分的とし、不足フィールドを明示的に列挙します。
- 取得した出力は、契約内の名称に一致する決定的なキーで返します。
- 出力ファイルのパスと、各必須成果物のステータスを維持します。
- エントリのプロンプトまたは契約ファイルが見つからない場合は、そのエントリを
partialとして扱い、不足しているパスを記録したうえで、他のエントリの処理を続けます。
ステップ 5:変換後のエージェントスクリプトの強化(生成されたエージェントスクリプトごと)
ステップ 4 の完了後、生成された各 .agent 成果物について、次の処理を行います。
- キャプチャした
/agentforce-generateの出力から、生成された.agentファイルのパスを特定します。 - 変換後の強化に関するリファレンスに記載された変換後の強化ワークフローを、次の値を指定して実行します。
agentscript_file=<generated-agent-file-path>mode=<online|offline>(ステップ 1 で解決された、実際に使用するオーケストレーターの実行モード)- オンラインモードの場合のみ:
org_alias=<org-alias>(強化されたエージェントスクリプトを再デプロイするために必須)
- 既存ファイルの強化を必須とします。
- 最適化/強化された出力は、同じ
.agentファイルの場所に書き込む必要があります。
- 最適化/強化された出力は、同じ
- ファイルごとの強化ステータスと、部分的な失敗があればその内容を記録します。
並列化のルール:
- 各ファイルの強化は独立しているため、生成された
.agentファイル全体で変換後の強化ワークフローを並列実行します。
ステップ 6:実行レポートをまとめて完了する
作業対象のすべてのボットについてステップ 5 が完了した後、次の処理を行います。
- オーケストレーターの作業ディレクトリに、空でない Markdown ファイルとして、人が読める単一の統合実行レポートを作成します。ボットごとに、実際の実行モード、プランナーが実行されたかどうか(
executedまたはskipped)、生成された Agent Spec のパスと生成された.agentのパス、アクション一覧(NEEDS_STUB項目を含む)、および--interactive=falseの場合は自動適用された判断を記載する必要があります。 - 実行レポートを最終成果物として扱います。他のすべての成果物(Agent Spec、引き継ぎ JSON、未解決の質問、プランナーの出力、生成された
.agentファイル)がすでに書き込まれた後にのみ、実行レポートを作成します。
成果物
次の内容を返します。
- 解析されたボット/バージョンの一覧
- ボットごとのアップグレード実行ステータス
- 集約出力(Agent Spec の完全な一覧と、作成準備完了の最終サブセット)
- プランナーワークフローのステータス(
executedまたはskipped)と、実行された場合はbot-upgrade-planner-output.jsonのパス /agentforce-generateの Spec ごとの実行ステータス- ボット/Spec ごとの生成された引き継ぎ成果物のパス(該当する場合はプランナーによって更新された成果物を含む)
- 出力仕様に従ってキャプチャした
/agentforce-generateの出力 - エージェントごとの変換後の強化ステータス(強化された
.agentファイルのパスを含む) - ステップ 6 で作成された統合実行レポートのパス