salesforce-flow-design
Record-Triggered・Screen・Autolaunched・Scheduled・Platform Event など各種Salesforce Flowの設計・レビュー時に活用するスキル。フロータイプの適切な選択、ループ内でのDML/Get Recordsの排除、データ変更要素へのフォルトコネクタの設置、オートメーション密度チェックなど、バルクセーフな設計標準とフォルトハンドリング基準をデプロイ前に確保します。
description の原文を見る
Salesforce Flow architecture decisions, flow type selection, bulk safety validation, and fault handling standards. Use this skill when designing or reviewing Record-Triggered, Screen, Autolaunched, Scheduled, or Platform Event flows to ensure correct type selection, no DML/Get Records in loops, proper fault connectors on all data-changing elements, and appropriate automation density checks before deployment.
SKILL.md 本文
Salesforce Flow の設計と検証
設計、構築、またはレビューするすべての Flow に対して、これらのチェックを適用します。
ステップ 1 — Flow が正しいツールであることを確認
Flow を設計する前に、より軽量な宣言型オプションで問題を解決できないことを確認します。
| 要件 | 最適なツール |
|---|---|
| 副作用なしでフィールド値を計算する | 数式フィールド |
| ユーザーメッセージ付きで不正なレコード保存を防ぐ | 検証ルール |
| 親レコードの子レコードを集計またはカウントする | ロールアップサマリフィールド |
| 複雑な複数オブジェクトロジック、コールアウト、または高ボリューム | Apex (Queueable / Batch) — Flow ではない |
| その他すべて | Flow ✓ |
数式フィールドまたは検証ルールで置き換え可能な Flow を構築している場合は、要件がより複雑であることをユーザーに確認させます。
ステップ 2 — 正しい Flow タイプを選択
| ユースケース | Flow タイプ | 主な制約 |
|---|---|---|
| 保存される前に同じレコードのフィールドを更新する | Before-save Record-Triggered | メールの送信、コールアウト、関連レコードの変更はできない |
| 関連レコードの作成/更新、メール、コールアウト | After-save Record-Triggered | コミット後に実行 — 再帰トラップを回避 |
| ユーザーをマルチステップ UI プロセスにガイドする | Screen Flow | レコードイベントによって自動的にトリガーできない |
| 別の Flow から呼び出される再利用可能なバックグラウンドロジック | Autolaunched (Subflow) | 入出力変数がコントラクトを定義する |
Apex の @InvocableMethod から呼び出されるロジック | Autolaunched (Invocable) | 入出力変数を宣言する必要がある |
| 時間ベースのバッチ処理 | Scheduled Flow | バッチコンテキストで実行 — ガバナ制限を尊重 |
| イベント (Platform Events / CDC) に応答する | Platform Event–Triggered | 非同期で実行 — 結果整合性 |
決定ルール: トリガーレコード自身のフィールドのみを変更する必要がある場合は before-save を選択します。関連レコードを触る必要がある場合、メールを送信する場合、またはコールアウトを行う場合は after-save に移動します。
ステップ 3 — 一括安全性チェックリスト
これらのパターンはスケーリング時のガバナ制限の失敗です。Flow が有効化される前にすべてを確認します。
ループ内の DML — 自動的に失敗
Loop element
└── Create Records / Update Records / Delete Records ← ❌ ループ内の DML
修正: ループ内でレコードを収集変数に集め、その後ループ 外部 で DML 要素を実行します。
ループ内の Get Records — 自動的に失敗
Loop element
└── Get Records ← ❌ ループ内の SOQL
修正: ループ 前に Get Records クエリを実行し、その後コレクション変数をループします。
正しい一括パターン
Get Records — 1 つのクエリですべてのレコードを収集
└── コレクション変数をループ
└── Decision / Assignment (DML なし、Get Records なし)
└── ループの後: Create/Update/Delete Records — 1 つの DML 操作
Transform vs ループ
目的がコレクションの変形である場合 (例: あるオブジェクトから別のオブジェクトへのフィールド値のマッピング)、ループ + Assignment パターンの代わりに Transform 要素を使用します。Transform は設計上一括安全で、より読みやすい Flow グラフを生成します。
ステップ 4 — 障害パス要件
実行時に失敗する可能性があるすべての要素には、障害コネクタが必要です。障害パスのない Flow はシステムエラーをユーザーに露出させます。
障害コネクタが必要な要素
- Create Records
- Update Records
- Delete Records
- Get Records (存在しない可能性がある必須レコードにアクセスする場合)
- Send Email
- HTTP Callout / External Service アクション
- Apex アクション (invocable)
- Subflow (サブフローが障害をスローできる場合)
障害ハンドラーパターン
Fault connector → Log Error (ロギングオブジェクトにレコードを作成するか Platform Event を発火)
→ ユーザーフレンドリーなメッセージを含むスクリーン要素 (Screen Flows)
→ Stop / End 要素 (Record-Triggered Flows)
障害パスを障害をスローした同じ要素に接続しないでください — これは無限ループを生成します。
ステップ 5 — 自動化密度チェック
デプロイ前に、同じオブジェクトとトリガーイベントに重複した自動化がないことを確認します。
- 同じ
Object+When to Runの組み合わせ上のその他のアクティブな Record-Triggered Flows - 同じオブジェクト上でまだアクティブなレガシー Process Builder ルール
- 同じフィールド変更でトリガーされる Workflow Rules
- 同じ
before insert/after updateコンテキストでも実行される Apex トリガー
重複した自動化は予期しない順序付け、再帰、ガバナ制限の失敗を引き起こす可能性があります。有効化前にオブジェクトの自動化インベントリを文書化します。
ステップ 6 — Screen Flow UX ガイドライン
- Screen Flow を通るすべてのパスは End 要素に到達する必要があります — 孤立したブランチはありません。
- マルチステップフローに対して Back ナビゲーションオプションを提供します。ただし、戻るナビゲーションがデータを破損させる場合は除きます。
- すべてのユーザー入力に対して
lightning-inputおよび SLDS 準拠コンポーネントを使用します — HTML フォーム要素は使用しないでください。 - ユーザーが進む前に必須入力の検証をスクリーン上で実行します — スクリーン上の Flow 検証ルールを使用します。
- Flow がセッション間でユーザーアクションを待つ必要がある場合、Pause 要素を処理します。
ステップ 7 — デプロイメント安全性
ドラフトとしてデプロイ → 1 レコードでテスト → 200+ レコードでテスト → 有効化
- 有効化前に常に ドラフト としてデプロイし、徹底的にテストします。
- Record-Triggered Flows の場合: 正確なエントリ条件でテストします (例:
ISCHANGED(Status)— テストデータが実際に条件をトリガーすることを確認)。 - Scheduled Flows の場合: 本番環境での有効化前にサンドボックスで小さいバッチでテストします。
- オブジェクトの Automation Density スコアをチェックします — 単一オブジェクト上の 3 つを超える有効な自動化は実行順序のリスクを増加させます。
クイックリファレンス — Flow アンチパターンサマリー
| アンチパターン | リスク | 修正 |
|---|---|---|
| ループ内の DML 要素 | ガバナ制限例外 | DML をループの外に移動 |
| ループ内の Get Records | SOQL ガバナ制限例外 | ループ前にクエリを実行 |
| DML/メール/コールアウト要素に障害コネクタなし | 処理されない例外がユーザーに露出 | そのような要素のすべてに障害パスを追加 |
| 再帰ガードのない after-save フローでトリガーレコードを更新 | 無限トリガーループ | エントリ条件または再帰ガード変数を追加 |
$Record コレクション上での直接ループ | スケーリング時の不正な動作 | 最初にコレクション変数に割り当て、その後ループ |
| 新しい Flow と並行してアクティブな Process Builder | 二重実行、予期しない順序付け | Flow を有効化する前に Process Builder を非有効化 |
| すべてのブランチに End 要素のない Screen Flow | 実行時エラーまたはスタックユーザー | すべてのブランチが End 要素に解決されることを確認 |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- github
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/github/awesome-copilot / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。