sf-eval について
sf-eval は、Salesforce のスキルが AI 生成コードの品質を高めるか評価するスキルです。スキルの有無によるコードを比較し、ベンチマーク、静的チェック、任意コードの評価を行います。
主な機能
- 01スキル適用前後のコード比較
- 02Salesforce ベンチマークタスク実行
- 035 項目での出力採点
- 04静的チェックの実行
- 05任意コードの評価
活用シーン
- 01Salesforce コードへのスキルの効果測定
- 02Salesforce の実践基準に沿ったコード確認
- 03独自の Salesforce 実装の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ clientell-ai/ salesforce-skills --skill sf-evalインストール後、Claude Code で/sf-evalを入力して読み込まれたか確認します。
詳細
Salesforce スキル評価ツール
Salesforce スキルによって、AI が生成するコードの品質が向上するかどうかを評価します。スキルのコンテキストがある場合とない場合に生成されたコードを比較し、両方を採点します。
評価モード
モード 1:ベンチマークタスクを実行する
ユーザーが /sf-eval または /sf-eval <task-id> と入力した場合:
-
evals/benchmarks/tasks.jsonから利用可能なタスクを読み込みます。 -
各タスク(または指定されたタスク)について、次を実行します。
ステップ A — ベースラインを生成する(スキルのコンテキストなし): Salesforce のスキル知識がないかのように、タスクのプロンプトに対する Salesforce コードを生成します。一般的な LLM が出力するような、動作するものの、Salesforce 固有のベストプラクティスが不足している可能性の高いコードを作成します。プロンプトで明示的に求められていない限り、
WITH USER_MODE、トリガーハンドラーパターン、stripInaccessibleは使用しないでください。一般的な AI が書くようなコードを作成してください。ステップ B — スキルを使ったコードを生成する: 該当するスキルファイル
skills/<skill>/SKILL.mdとその参照資料を読み込みます。次に、スキルのルール、パターン、注意点をすべて厳密に守ってコードを生成します。ステップ C — 両方を採点する: ルーブリック
evals/benchmarks/rubric.mdと審査用プロンプトevals/benchmarks/judge-prompt.mdを読み込みます。各出力を次の 5 つのカテゴリで採点します(各 0~5 点)。カテゴリ 確認項目 セキュリティ WITH USER_MODE、stripInaccessible、with sharing、インジェクションなし、認証情報のハードコードなし ガバナ制限 SOQL/DML をループ内で実行していない、Map/Set コレクションを使用している、クエリが効率的 一括処理対応 200 件以上のレコードを処理できる、コレクションを使用している、Trigger.new[0] を使用していない パターン トリガーハンドラー、サービス/セレクターレイヤー、命名規則 完全性 要件を満たしている、エッジケースに対応している、エラー処理がある、本番環境で使用できる ステップ D — レポートを出力する: 次の比較表の形式で出力します。
## Task: <task-id> **Prompt**: <prompt text> ### Baseline (No Skills) — X/25 | Category | Score | Reason | |----------|-------|--------| | Security | X/5 | ... | | Governor Limits | X/5 | ... | | Bulkification | X/5 | ... | | Patterns | X/5 | ... | | Completeness | X/5 | ... | ### With Skills — X/25 | Category | Score | Reason | |----------|-------|--------| | Security | X/5 | ... | | Governor Limits | X/5 | ... | | Bulkification | X/5 | ... | | Patterns | X/5 | ... | | Completeness | X/5 | ... | ### Improvement: +X points (+XX%) -
すべてのタスクを実行した場合は、最後に次のサマリー表を作成します。
## Summary | Task | Baseline | With Skills | Delta | |------|----------|-------------|-------| | ... | X/25 | X/25 | +X | | **Average** | **X/25** | **X/25** | **+X (+XX%)** | -
完全なレポートを
evals/benchmarks/results/BENCHMARK.mdに保存します。
モード 2:静的チェック
ユーザーが /sf-eval --check <file> または /sf-eval check <file> と入力した場合:
bash evals/checks/static-checks.sh <file> を実行し、結果を表示します。
モード 3:カスタムコードを採点する
ユーザーが自分のコードを提示し、評価を依頼した場合:
ルーブリック(同じ 5 カテゴリ、合計 25 点)に基づいてコードを採点し、該当するスキルを参照しながら改善案を提示します。
利用可能なベンチマークタスク
タスクの全一覧は evals/benchmarks/tasks.json を確認してください。タスクには次のものがあります。
apex-trigger-bulk— ハンドラーパターンと一括処理対応を備えたトリガーapex-batch-cleanup— エラー処理を備えた Batch Apexapex-rest-api— セキュリティを備えた REST エンドポイントapex-callout-service— Named Credentials + Queueabletest-trigger-handler— 包括的なテストクラスtest-callout-mock— HttpCalloutMock パターンsoql-complex-query— 集計 + 最適化soql-dynamic-search— インジェクションを防止した動的 SOQLlwc-record-list— LDS + エラー状態を備えた LWCflow-opportunity-automation— バイパス機能を備えた Flow XMLsecurity-audit-apex— セキュリティ違反の修正schema-custom-object— メタデータ XML の生成deploy-cicd-pipeline— SF 用 GitHub Actionsdata-migration-plan— Bulk API + リレーションapex-platform-events— イベント駆動アーキテクチャ
ベースライン生成に関する重要なルール
「ベースライン」(スキルなし)のコードを生成する際は、一般的な LLM が出力するようなコードを意図的に作成する必要があります。
public classを使用する(with sharingは付けない)- SOQL で
WITH USER_MODEを省略する - DML で
stripInaccessibleを省略する - ロジックをトリガーの本体に直接記述する(ハンドラーは使用しない)
- 単純なループ内で SOQL を実行する場合がある
- null チェックとエラー処理を省略する
- Salesforce 固有の最適化を行わず、基本的なパターンを使用する
これは、意図的に質の低いコードを書くということではありません。Salesforce の専門知識を持たない一般的な AI が書くようなコードを作成するということです。ベースラインは動作するものの、プラットフォーム固有のベストプラクティスが不足している必要があります。
参照資料
ワークフロー
- 評価モード(ベンチマーク、静的チェック、またはカスタムコード)を特定します
- tasks.json と rubric.md を読みます
- ベースラインコードとスキル適用後のコードを生成します
- 両方を評価基準に照らして採点します
- 書式を整えた比較レポートを出力します
- ベンチマーク全体を実行する場合は、evals/benchmarks/results/BENCHMARK.md に保存します