mcpField
B
building-omnistudio-omniscript

building-omnistudio-omniscript

github.com/forcedotcom開発1.1k2.4k 回インストール1 日前に更新
リポジトリ

building-omnistudio-omniscript について

要件に基づく複数ステップの OmniStudio OmniScript の作成と検証を支援するスキルです。要素設定、データフローと依存関係の確認、採点、デプロイ、有効化を扱います。

主な機能

  1. 01要件から複数ステップの OmniScript を生成
  2. 02要素と PropertySetConfig を設定
  3. 03データフローとコンポーネント依存関係を確認
  4. 046カテゴリで検証と採点
  5. 05バージョンのデプロイと有効化

活用シーン

  1. 01データを収集して送信するガイド付きフローの作成
  2. 02Integration Procedures と DataRaptors の接続
  3. 03デプロイ前の参照と設定の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/forcedotcom/sf-skills --skill building-omnistudio-omniscript

インストール後、Claude Code で/building-omnistudio-omniscriptを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

CREDITS.md
assets/
omni-process-element-step.json
omni-process-element-text-block.json
omni-process-omniscript.json
references/
best-practices.md
element-types.md
scripts/
check-duplicate-omniscript.sh
cli-reference.sh
deploy-omniscript.sh

詳細

building-omnistudio-omniscript:OmniStudio OmniScript の作成と検証

宣言型のステップベースのガイド付きデジタルエクスペリエンスを構築する、OmniStudio OmniScript のエキスパートビルダーです。OmniScript は Screen Flow に相当する OmniStudio の機能です。入力を収集し、サーバー側のロジック(Integration Procedure、DataRaptor)を実行して、ユーザーに結果を提示する複数ステップのインタラクティブなプロセスを、コードを使わずに構築できます。

クイックリファレンス

スコアリング:6 つのカテゴリで合計 120 点。しきい値:✅ 90 点以上(デプロイ) | ⚠️ 67~89 点(レビュー) | ❌ 67 点未満(ブロック — 修正が必要)


対象範囲

  • 対象:要件に基づく OmniScript の作成、要素の選択と PropertySetConfig の設計、依存関係の分析(Integration Procedure、DataRaptor)、データフローの追跡、120 点満点の検証スコアリング、デプロイと有効化
  • 対象外:FlexCard の構築(building-omnistudio-flexcard を使用)、Integration Procedure の直接作成(building-omnistudio-integration-procedure を使用)、完全な依存関係ツリーのマッピング(analyzing-omnistudio-dependencies を使用)、メタデータの org へのデプロイ(deploying-metadata を使用)

必須入力

構築前に、次の情報を収集してください。

入力説明デフォルト
Typeプロセスのカテゴリ(例:ServiceRequest、Enrollment)なし — 必須
SubType具体的なバリエーション(例:NewCase、UpdateAddress)なし — 必須
LanguageOmniScript のロケールEnglish
Purposeこの OmniScript がガイドするビジネスプロセスなし — 必須
ターゲット orgデプロイ先の org エイリアス現在のデフォルト org
データソースクエリまたは更新するオブジェクト/API要件から特定

主な責務

  1. OmniScript の生成:要件に基づいて適切な要素タイプを各ステップに選択し、適切に構成された OmniScript を作成します
  2. 要素の設計:正しいデータバインディング、検証、条件付きロジックを設定し、各要素の PropertySetConfig JSON を構成します
  3. 依存関係の分析:デプロイ前に、Integration Procedure、DataRaptor、埋め込み OmniScript へのすべての参照をマッピングします
  4. データフローの分析:OmniScript の JSON 構造内で、事前入力からユーザー入力、最終保存アクションまでのデータの流れを追跡します

重要:オーケストレーションの順序

analyzing-omnistudio-dependencies → building-omnistudio-datamapper → building-omnistudio-integration-procedure → building-omnistudio-omniscript → building-omnistudio-flexcard(現在の項目:building-omnistudio-omniscript)

OmniScript は Integration Procedure と DataRaptor を使用します。これらを先に構築してください。FlexCard から OmniScript を起動できるため、FlexCard は後で構築します。開始前に analyzing-omnistudio-dependencies を使用して、依存関係ツリー全体をマッピングしてください。


主なポイント

ポイント詳細
Type/SubType/Language の組み合わせOmniScript を一意に識別します。3 つすべての値が必須で、複合キーを構成します。例:Type=ServiceRequest、SubType=NewCase、Language=English
PropertySetConfigレイアウト、データバインディング、検証ルール、条件付き表示など、すべての要素設定を含む JSON blob です。実際のロジックはここに記述されます
コア名前空間IsIntegrationProcedure = false の OmniProcess(同等の値は OmniProcessType='OmniScript')です。要素は子の OmniProcessElement レコードとして保存されます
要素階層要素はツリー構造に Level/Order フィールドを使用します。Level 0 はステップ、Level 1 以上はステップ内の要素です。Order は同じレベル内の順序を決定します
バージョン管理複数のバージョンを作成できますが、Type/SubType/Language の組み合わせごとに有効化できるのは 1 つだけです。IsActive フィールドで有効化します
Data JSONOmniScript は、すべてのステップで単一の JSON データ構造を受け渡します。要素はマージフィールド構文を使って、この共有 JSON の値を読み書きします

ワークフローの設計(5 フェーズのパターン)

フェーズ 1:要件の収集

構築する前に、代替案を評価します:OmniScripts は、複雑で複数のステップからなるガイド付きプロセスに最適です。シンプルな単一画面でのデータ入力には、Screen Flows を検討してください。インタラクションを伴わないデータ表示には、FlexCards を検討してください。

ユーザーに質問して、以下の情報を収集します:

  • Type:プロセスのカテゴリ(例:ServiceRequest、Enrollment、ClaimSubmission)
  • SubType:具体的なバリエーション(例:NewCase、UpdateAddress、FileAppeal)
  • Language:通常は English。複数言語のサポートが必要な場合を除きます
  • Purpose:この OmniScript でユーザーを案内するビジネスプロセス
  • Target org:デプロイ先の Org エイリアス
  • Data sources:照会または更新が必要なオブジェクト/API

次に:既存の OmniScripts を確認して重複を避け、再利用可能な Integration Procedures または DataRaptors を特定し、依存関係の連鎖を整理します。

フェーズ 2:設計と要素の選択

各ステップを設計し、操作パターンに適した要素タイプを選択します。

コンテナー要素
要素タイプ目的主な設定
StepUI 要素のグループをまとめる最上位のコンテナー。各 Step はウィザードの 1 ページですchartLabel、knowledgeOptions、show(条件付き表示)
Conditional Block条件に基づいて要素のグループを表示/非表示にしますconditionType、show 式
Loop Blockデータリストを反復処理し、各項目に要素を表示しますloopData(配列への JSON パス)
Edit Block表形式データをインライン編集するためのコンテナーですeditFields、dataSource
入力要素
要素タイプ目的主な設定
Text1 行のテキスト入力label、placeholder、pattern(正規表現による検証)
Text Area複数行のテキスト入力label、maxLength、rows
Number書式設定を任意で指定できる数値入力label、min、max、step、format
Date日付ピッカーlabel、dateFormat、minDate、maxDate
Date/Time日付と時刻のピッカーlabel、dateFormat、timeFormat
Checkbox真偽値の切り替えlabel、defaultValue
Radio単一選択用のラジオボタングループlabel、options(静的またはデータ駆動)
Selectドロップダウン選択label、options、optionSource(静的/データ)
Multi-select複数項目の選択label、options、maxSelections
Type Ahead検索/オートコンプリート入力label、dataSource、searchField、minCharacters
Signature署名の入力欄label、penColor、backgroundColor
Fileファイルのアップロードlabel、maxFileSize、allowedExtensions
Currencyロケールに応じた書式の通貨入力label、currencyCode、min、max
Email書式検証付きのメールアドレス入力label、placeholder
Telephoneマスキング付きの電話番号入力label、mask、placeholder
URL書式検証付きの URL 入力label、placeholder
Passwordマスクされたテキスト入力label、minLength
Rangeスライダー入力label、min、max、step
Time時刻ピッカーlabel、timeFormat
表示要素
要素タイプ目的主な設定
Text Block静的コンテンツの表示(HTML に対応)textContent、HTMLTemplateId
Headlineセクションの見出しtext、level(h1-h6)
Aggregate計算された概要の表示aggregateExpression、format
Disclosure展開/折りたたみ可能なコンテンツlabel、defaultExpanded
Image画像の表示imageURL、altText
Chartデータの可視化chartType、dataSource
アクション要素
要素タイプ目的主要な設定
DataRaptor Extract アクションSalesforce からデータを取得bundle、inputMap、outputMap
DataRaptor Load アクションSalesforce にデータを書き込むbundle、inputMap
Integration Procedure アクションサーバーサイドの Integration Procedure を呼び出すipMethod (Type_SubType)、inputMap、outputMap、remoteOptions
リモートアクションApex @RemoteAction または REST を呼び出すremoteClass、remoteMethod、inputMap
ナビゲートアクションページのナビゲーションまたはリダイレクトtargetType、targetId、URL
DocuSign エンベロープアクションDocuSign エンベロープをトリガーするtemplateId、recipientMap
メールアクションメールを送信するemailTemplateId、recipientMap
ロジック要素
要素タイプ目的主要な設定
値の設定変数の代入とデータ変換elementValueMap (キーと値のペア)
検証カスタムメッセージ付きの入力検証ルールvalidationFormula、errorMessage
数式数式表現を使用した値の計算expression、dataType
送信アクション収集したデータの最終送信postMessage、preTransformBundle、postTransformBundle
フェーズ 3: 生成と検証

scripts/check-duplicate-omniscript.sh <Type> <SubType> <Language> <org> を実行して、重複する Type/SubType/Language が存在しないことを確認します。

OmniScript をビルドする:

  1. Type、SubType、Language、および OmniProcessType='OmniScript' を指定して OmniProcess レコードを作成します
  2. 各ステップ (Level=0) に対して OmniProcessElement 子レコードを作成します
  3. ステップ内の各要素 (Level=1 以上、Order フィールドで並び替え) に対して OmniProcessElement 子レコードを作成します
  4. 各要素の PropertySetConfig JSON を設定します
  5. アクション要素をそれぞれの Integration Procedure / DataRaptor に接続します

検証 (STRICT モード):

  • ブロック: Type/SubType/Language の欠落、循環する OmniScript の埋め込み、壊れた IP/DataRaptor 参照、必須の PropertySetConfig フィールドの欠落
  • 警告: 要素のないステップ、検証のない入力要素、アクションのエラー処理の欠落、未使用のデータパス、深くネストされた要素 (4 レベル超)

検証レポート形式 (6 カテゴリのスコアリング 0~120):

Score: 102/120 ---- Very Good
-- Design & Structure: 22/25 (88%)
-- Data Integration: 18/20 (90%)
-- Error Handling: 17/20 (85%)
-- Performance: 18/20 (90%)
-- User Experience: 17/20 (85%)
-- Security: 10/15 (67%)
フェーズ 4: デプロイ
  1. 前提条件: 組織の認証を確認します (sf org display -o <org>)。参照されているすべての DataRaptor と Integration Procedure がターゲット組織で有効であることを確認します。
  2. まずすべての依存関係をデプロイします: DataRaptor、Integration Procedure、参照されている OmniScript。
  3. scripts/deploy-omniscript.sh <Name> <Type> <SubType> <org> を実行します — これにより OmniScript がデプロイされ、有効化が確認されます。デプロイが失敗した場合、スクリプトは復旧手順 (部分的なレコードを無効化して削除し、再試行する) を出力します。
  4. デプロイの成功後、自動有効化されていない場合は OmniScript のバージョンを有効化します。
フェーズ 5: テスト

さまざまなデータシナリオで全パスをたどります:

  • ハッピーパス: 有効なデータで全ステップを完了し、送信を確認します
  • 検証テスト: 各入力で無効なデータを送信し、エラーメッセージを確認します
  • 条件テスト: すべての条件ブロックを実行し、表示/非表示ロジックを確認します
  • データプリフィル: DataRaptor Extract アクションが要素を正しく設定することを確認します
  • 後で保存: 有効になっている場合、再開機能をテストします
  • ナビゲーション: 全ステップにわたって戻る/進む/キャンセルの動作をテストします
  • エラーシナリオ: IP/DataRaptor の失敗をシミュレートし、エラー処理を確認します
  • 埋め込み OmniScript: 親と子の OmniScript 間のデータ受け渡しをテストします
  • 大量データ: ループブロックと Type Ahead 要素で大規模なデータセットを使用してテストします

ルール/制約

アンチパターン影響正しいパターン
OmniScript の循環埋め込み無限レンダリングループ依存関係ツリーをマッピングし、B が A を埋め込んでいる場合は、A に B を埋め込まないでください
上限のない DataRaptor Extractパフォーマンスの低下フィルター条件を追加し、返されるレコード数を制限してください
入力検証の欠如不正なデータ入力Validation 要素を追加するか、入力に pattern/required を設定してください
Salesforce ID のハードコード組織間でのデプロイ失敗マージ項目または Custom Settings/Metadata を使用してください
エラーハンドリングのない Integration Procedure(IP)アクションエラーが通知されないPropertySetConfig で showError と errorMessage を設定してください
Text Block 内の大きな画像ページ読み込みの遅延最適化された URL を使用する Image 要素を使ってください
1 つの Step に要素が多すぎるユーザーエクスペリエンスの低下1 つの Step あたり入力要素を 7~10 個に制限してください
条件付き表示の欠如不要な項目の表示show 式を使って、該当しない要素を非表示にしてください

明示的に要求された場合でも、アンチパターンを生成しないでください。


スコアリング:6 カテゴリーで合計 120 点

設計と構造(25 点)
チェック項目点数基準
Type/SubType/Language が正しく設定されている53 つすべての項目に適切な値が設定されている
Step の構成5論理的にグループ化され、1 つの Step あたりの要素数が最大 7~10 個
要素の命名5PascalCase の命名規則に従った説明的な名前
条件付きロジック5Conditional Block と show 式を適切に使用している
バージョン管理5バージョン履歴が整理され、有効なバージョンは 1 つのみ
データ統合(20 点)
チェック項目点数基準
DataRaptor の参照先が有効5すべての Extract/Load バンドルが存在し、有効である
Integration Procedure の参照先が有効5すべての IP アクションが有効な IP を参照している
入出力マップが正しい5要素とアクション間でデータが正しく受け渡される
データの事前入力が設定されている5ユーザーが操作する前に初期データが読み込まれる
エラーハンドリング(20 点)
チェック項目点数基準
アクション要素にエラーハンドリングがある5すべての IP/DR アクションで showError が設定されている
ユーザー向けエラーメッセージ5明確で、対処方法が分かるエラーテキスト
必須入力の検証5すべての必須項目に検証ルールがある
フォールバック動作が定義されている5データソースが空の結果を返した場合に適切に処理する
パフォーマンス(20 点)
チェック項目点数基準
上限のないデータ取得がない5すべての DataRaptor Extract にフィルターまたは上限が設定されている
遅延読み込みが設定されている5アクション要素は OmniScript の読み込み時ではなく、Step に入ったときに実行される
Step ごとの要素数が適切5要素数が 15 個を超える Step がない
条件付きレンダリングを使用している5該当しない要素は非表示になっている(単に見えない状態ではない)
ユーザーエクスペリエンス(20 点)
チェック項目点数基準
Step の流れが論理的5Step が自然なタスクの進行順に並んでいる
入力ラベルとヘルプテキスト5すべての入力に分かりやすいラベルと、状況に応じたヘルプがある
ナビゲーションコントロール5戻る、次へ、キャンセル、後で保存が適切に設定されている
レスポンシブレイアウト5要素がモバイルとデスクトップのブレークポイント向けに設定されている
セキュリティ(15 点)
チェック項目点数基準
クライアント側の JSON に機密データがない5パスワード、SSN、トークンはサーバー側に保持されている
IP アクションがサーバー側の処理を使用している5機密性の高いロジックは、クライアント側の OmniScript ではなく Integration Procedure にある
項目レベルのアクセスが遵守されている5データアクセスがユーザープロファイル/権限セットに一致している

CLI コマンド

すべてのコマンドリファレンスについては、scripts/cli-reference.sh を参照してください。よく使うコマンド:

# List active OmniScripts
sf data query -q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM OmniProcess WHERE IsActive=true AND OmniProcessType='OmniScript' LIMIT 50" -o <org>

# Query elements for a specific OmniScript
sf data query -q "SELECT Id,Name,ElementType,Level,Order FROM OmniProcessElement WHERE OmniProcessId='<id>' ORDER BY Level,Order LIMIT 200" -o <org>

# Check OmniScript versions
sf data query -q "SELECT Id,VersionNumber,IsActive,LastModifiedDate FROM OmniProcess WHERE Type='<Type>' AND SubType='<SubType>' AND OmniProcessType='OmniScript' ORDER BY VersionNumber DESC LIMIT 10" -o <org>

スキル間の連携

From SkillTo building-omnistudio-omniscriptWhen
analyzing-omnistudio-dependencies-> building-omnistudio-omniscript「OmniScript を構築する前に依存関係を分析する」
building-omnistudio-datamapper-> building-omnistudio-omniscript「DataRaptor の準備ができたので、それを使用する OmniScript を構築する」
building-omnistudio-integration-procedure-> building-omnistudio-omniscript「IP の準備ができたので、OmniScript のアクションに組み込む」
From building-omnistudio-omniscriptTo SkillWhen
building-omnistudio-omniscript-> building-omnistudio-flexcard「この OmniScript を起動する FlexCard を構築する」
building-omnistudio-omniscript-> deploying-metadata「OmniScript をターゲット組織にデプロイする」
building-omnistudio-omniscript-> analyzing-omnistudio-dependencies「デプロイ前に依存関係ツリー全体をマッピングする」
building-omnistudio-omniscript-> building-omnistudio-integration-procedure「この OmniScript アクション用の新しい IP が必要」
building-omnistudio-omniscript-> building-omnistudio-datamapper「データの事前入力用の DataRaptor が必要」

注意点

IssueResolution
多言語 OmniScriptLanguage ごとに個別のバージョンを作成し、Type/SubType は共通にします。ラベルには翻訳ワークベンチを使用します
埋め込み OmniScript のデータ受け渡し親データの JSON キーを prefillJSON 経由で子 OmniScript の入力にマッピングします。データの往復をテストします
大規模な Loop Block データセットDataRaptor の結果をページ分割するか、件数を制限します。Integration Procedure(IP)でのサーバー側フィルタリングを検討します
FlexCard のフライアウト内の OmniScriptFlexCard が必要なコンテキストデータを渡すことを確認し、フライアウトのサイズをテストします
Community/Experience Cloud へのデプロイOmniScript コンポーネントが Experience Builder で使用可能であることを確認します。ゲストユーザーの権限も確認します
保存と再開(後で保存)saveNameTemplate、saveExpireInDays を設定し、部分的なデータで再開できることをテストします
バージョンの競合新しいバージョンを有効化する前に古いバージョンを無効化します。同じ Type/SubType/Language の組み合わせで、2 つのバージョンを同時に有効化しないでください
OmniScript 内のカスタム LWCLWC を OmniScript 互換として登録し、omniscript-lwc の名前空間規則に従います
名前空間付き組織マネージド OmniStudio パッケージの組織にデプロイする場合は、適切な名前空間(例:omnistudio__)をバンドル名と API 名の前に付けます
作成時に OmniProcessType を設定できないOmniProcessType は IsIntegrationProcedure から計算されます(OmniScript の場合は false)。直接設定しないでください

一般的なランタイムのトラブルシューティング(要素がレンダリングされない、データが事前入力されない、IP アクションがエラーを出さずに失敗する)については、references/best-practices.md のセクション 8 を参照してください。


メモ

API:66.0 | モード:Strict(警告があるとブロック) | スコアリング:スコアが 67 未満の場合はデプロイをブロック

必須の上流スキル:building-omnistudio-datamapper、building-omnistudio-integration-procedure

任意のスキル:deploying-metadata、building-omnistudio-flexcard、analyzing-omnistudio-dependencies

OmniScript のプログラムによる作成:REST API(sf api request rest --method POST --body @file.json)を使用します。必須フィールド:Name、Type、SubType、Language、VersionNumber。OmniScript の IsIntegrationProcedure はデフォルトで false です。OmniProcessType は計算されるため、直接設定しないでください。sf data create record --values フラグでは、PropertySetConfig のような JSON テキストエリアのフィールドを処理できません。各 Step と要素に対応する子 OmniProcessElement レコードを REST API で作成します。


出力内容

このスキルで作成される成果物:

  • OmniScript JSON(assets/omni-process-omniscript.json テンプレート)— REST API で作成できる状態の OmniProcess レコード
  • Step 要素 JSON(assets/omni-process-element-step.json テンプレート)— 各 Step(Level=0)用の OmniProcessElement レコード
  • 要素 JSON(assets/omni-process-element-text-block.json など)— 子要素(Level=1+)用の OmniProcessElement レコード
  • 検証レポート — 6 カテゴリにわたる120点満点のスコアと、合格/警告/ブロックの判定結果

リファレンスファイル一覧

ファイル読み込むタイミング
references/element-types.mdフェーズ 2 — 要素の選択:任意の要素タイプの PropertySetConfig を設定する前に読み込みます
references/best-practices.mdフェーズ 2~5 — 設計パターン:Step の設計、データの事前入力、検証、ナビゲーション、パフォーマンス、トラブルシューティングのガイダンスを確認します
assets/omni-process-omniscript.jsonフェーズ 3 — 生成:REST API を使用して OmniScript を構築する際の OmniProcess レコードテンプレートとして使用します
assets/omni-process-element-step.jsonフェーズ 3 — 生成:Step(Level=0)用の OmniProcessElement レコードテンプレートとして使用します
assets/omni-process-element-text-block.jsonフェーズ 3 — 生成:Text Block 要素テンプレートとして使用します。他の表示要素タイプに合わせて調整します
scripts/check-duplicate-omniscript.shフェーズ 3 — 新しい OmniScript を作成する前に実行し、Type/SubType/Language の組み合わせが重複していないことを確認します
scripts/deploy-omniscript.shフェーズ 4 — OmniScript をデプロイし、アクティベーションを検証するために実行します。前提条件の確認とエラー復旧が含まれます
scripts/cli-reference.sh任意のフェーズ — OmniScript のクエリ、取得、デプロイ、検証に使用する CLI コマンドの完全なリファレンスです

コメント