sf-data について
sf-data は、Salesforce のレコード操作、一括データ処理、テストデータ準備を支援するスキルです。スクリプト生成とリモート実行を使い分け、検証から結果確認、後片付けまで案内します。
主な機能
- 01レコードの作成・更新・削除・エクスポート
- 02一括処理とツリーデータ操作
- 03テストデータの生成
- 04項目とリレーションの検証
- 05結果確認と後片付けの計画
活用シーン
- 01Apex や Flow のテストデータ準備
- 02親子データセットのインポート
- 03データ変更後のクリーンアップ計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jaganpro/ sf-skills --skill sf-dataインストール後、Claude Code で/sf-dataを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/bulk/bulk-insert-10000.apexbulk-insert-200.apexbulk-insert-500.apexbulk-upsert-external-id.apexassets/cleanup/delete-by-created-date.apexdelete-by-name.apexdelete-test-data.apexrollback-transaction.apexassets/csv/account-import.csvcontact-import.csvcustom-object-import.csvopportunity-import.csvassets/factories/account-factory.apexcase-factory.apexcontact-factory.apexcustom-object-factory.apexevent-factory.apexhierarchy-factory.apexlead-factory.apexopportunity-factory.apextask-factory.apexuser-factory.apexassets/json/account-contact-tree.jsonaccount-opportunity-tree.jsonfull-hierarchy-tree.jsonassets/soql/aggregate.soqlchild-to-parent.soqlparent-to-child.soqlpolymorphic.soqlsubquery.soql詳細
Salesforce Data Operations Expert(sf-data)
ユーザーがSalesforce のデータ操作を必要としている場合に、このスキルを使用します。レコードの CRUD、一括インポート/エクスポート、テストデータの生成、クリーンアップスクリプト、または Apex、Flow、連携の動作を検証するためのデータファクトリーパターンが対象です。
このスキルが担当するタスク
次の作業には sf-data を使用します。
sf dataCLI コマンド- レコードの作成、更新、削除、アップサート、エクスポート、ツリーインポート/エクスポート
- 現実的なテストデータの生成
- 大量データ操作とクリーンアップ
- データのシード/ロールバック用の匿名 Apex スクリプト
次の場合は、ほかのスキルに委任します。
- SOQL のみを記述する場合 → sf-soql
- Apex テストを実行または修復する場合 → sf-testing
- 先にメタデータをデプロイする場合 → sf-deploy
- スキーマ/項目定義を確認する場合 → sf-metadata
重要:モードの選択
ユーザーが希望するモードを確認します。
| モード | 使用する状況 |
|---|---|
| スクリプト生成 | まだ組織に変更を加えず、再利用可能な .apex、CSV、JSON アセットを作成したい場合 |
| リモート実行 | 実際の組織で今すぐレコードを作成/変更したい場合 |
ユーザーがスクリプトだけを必要としている可能性がある場合は、リモート実行を前提にしないでください。
まず確認する必須コンテキスト
次の情報を確認するか、推測します。
- 対象オブジェクト
- リモート実行が必要な場合は、組織のエイリアス
- 操作の種類:クエリ、作成、更新、削除、アップサート、インポート、エクスポート、クリーンアップ
- 想定されるデータ量
- テストデータ、移行データ、一時的なトラブルシューティング用データのいずれか
- 先に存在している必要がある親子関係
基本的な運用ルール
- ユーザーがローカルでのスクリプト生成を明示的に希望しない限り、
sf-dataはリモート組織のデータを操作します。 - データを作成する前に、オブジェクトと項目が存在している必要があります。
- 自動化テストでは、一括処理の動作が重要な場合、251 件以上のレコードを優先します。
- 大量のデータや不要なデータを作成する前に、必ずクリーンアップ方法を検討します。
- 生成するテストデータに実際の個人情報を使用しないでください。
- 単純な CRUD では CLI を優先し、サーバー側のオーケストレーションが本当に必要な操作には匿名 Apex を使用します。
メタデータが不足している場合は、作業を中止し、次に引き継ぎます。
- sf-metadata または sf-deploy
推奨ワークフロー
1. 前提条件を確認する
オブジェクト/項目が利用可能であること、組織の認証、必要な親レコードを確認します。
2. スキーマが不明確な場合は、describe を先に実行して事前検証する
レコードを作成または更新する前に、オブジェクトの describe データを使って次の項目を検証します。
- 必須項目
- 作成可能な項目と作成不可の項目
- 選択リストの値
- リレーション項目と親レコードの要件
実行例:
sf sobject describe --sobject ObjectName --target-org <alias> --json
便利なフィルター:
# Required + createable fields
jq '.result.fields[] | select(.nillable==false and .createable==true) | {name, type}'
# Valid picklist values for one field
jq '.result.fields[] | select(.name=="StageName") | .picklistValues[].value'
# Fields that cannot be set on create
jq '.result.fields[] | select(.createable==false) | .name'
3. 要件を満たす最小限の手段を選ぶ
| 必要な処理 | 標準の方法 |
|---|---|
| 少量の一時的な CRUD | sf data の単一レコードコマンド |
| 大量のインポート/エクスポート | sf data ... bulk による Bulk API 2.0 |
| 親子レコードのシードセット | ツリーインポート/エクスポート |
| 再利用可能なテストデータセット | ファクトリー/匿名 Apex スクリプト |
| 元に戻せる検証 | クリーンアップスクリプトまたはセーブポイントを使った方法 |
4. 実行するか、アセットを生成する
適合する場合は、assets/ 内の組み込みテンプレートを使用します。
assets/factories/assets/bulk/assets/cleanup/assets/soql/assets/csv/assets/json/
5. 結果を検証する
作成または更新後に、件数、リレーション、レコード ID を確認します。
6. 範囲を限定した再試行戦略を適用する
作成に失敗した場合:
- 主要な CLI コマンドの形式を一度試す
- パラメーターを修正して一度だけ再試行する
- describe を再実行し、前提を検証する
- 別の方法に切り替えるか、手動での回避策を提示する
同じ失敗するコマンドを延々と繰り返さないでください。
7. クリーンアップ方法を提示する
データを作成した場合は、正確なクリーンアップコマンドまたはロールバック用アセットを提示します。
特に重要なルール
一括処理の安全性
- 大量のデータには一括操作を使用する
- 適切な場合は、251 件以上のレコードで自動化の影響を受けやすい動作をテストする
- 一括処理のシナリオで、レコードを 1 件ずつ処理する方法を避ける
データの整合性
- 必須項目を含める
- 作成前に選択リストの値を検証する
- 親 ID とリレーションシップの整合性を確認する
- 入力規則と重複制約を考慮する
- 入力ペイロードから作成不可の項目を除外する
クリーンアップの徹底
次のいずれかを優先してください。
- ID による削除
- パターンによる削除
- 作成日の期間による削除
- スクリプトベースのテスト実行でのロールバック/セーブポイントパターン
よくある失敗パターン
| エラー | 考えられる原因 | 基本的な修正方針 |
|---|---|---|
INVALID_FIELD | 項目の API 名が誤っている、または FLS の問題 | スキーマとアクセス権を確認する |
REQUIRED_FIELD_MISSING | 必須項目が省略されている | describe データから必須値を含める |
INVALID_CROSS_REFERENCE_KEY | 親 ID が無効 | 先に親を作成/確認する |
FIELD_CUSTOM_VALIDATION_EXCEPTION | 入力規則によってレコードが拒否された | 有効なテストデータを使用するか、設定を調整する |
| 選択リストの値が無効 | describe に基づく値ではなく、推測した値を使用している | まず選択リストの値を確認する |
| 書き込み不可項目のエラー | 項目が作成不可/更新不可 | ペイロードから削除する |
| 一括処理の上限超過/タイムアウト | データ量に対して不適切なツールを使用している | 一括処理/段階的なインポートに切り替える |
出力形式
完了時は、次の順序で報告してください。
- 実施した操作
- オブジェクトと件数
- 対象組織またはローカルの成果物パス
- レコード ID/出力ファイル
- 検証結果
- クリーンアップ手順
推奨形式:
Data operation: <create / update / delete / export / seed>
Objects: <object + counts>
Target: <org alias or local path>
Artifacts: <record ids / csv / apex / json files>
Verification: <passed / partial / failed>
Cleanup: <exact delete or rollback guidance>
スキル間の連携
| 必要なこと | 委任先 | 理由 |
|---|---|---|
| オブジェクト/項目の構造を調べる | sf-metadata | 正確なスキーマに基づく確認 |
| 一括処理に関わる Apex の検証を実行する | sf-testing | テストの実行とカバレッジ |
| 不足しているスキーマを先にデプロイする | sf-deploy | メタデータの準備 |
| データを利用する本番ロジックを実装する | sf-apex または sf-flow | 動作の実装 |
リファレンスマップ
まずはこちら
- references/sf-cli-data-commands.md
- references/test-data-best-practices.md
- references/orchestration.md
- references/test-data-patterns.md
- references/test-data-factory-usage.md
クエリ/一括処理/クリーンアップ
- references/soql-relationship-guide.md
- references/relationship-query-examples.md
- references/bulk-operations-guide.md
- references/cleanup-rollback-guide.md
- references/cleanup-rollback-example.md
例/制限
- references/crud-workflow-example.md
- references/bulk-testing-example.md
- references/anonymous-apex-guide.md
- references/governor-limits-reference.md
- assets/
スコアガイド
| スコア | 意味 |
|---|---|
| 117+ | 本番環境でも安全に実施できる、優れたデータワークフロー |
| 104–116 | 良好な操作。軽微な改善の余地あり |
| 91–103 | 許容範囲だが、レビューを推奨 |
| 78–90 | 部分的/リスクのあるパターンが存在 |
| < 78 | 修正されるまで実施不可 |