关于 sf-eval
sf-eval 是用于评估 Salesforce 技能能否提升 AI 生成代码质量的技能,通过对比并评分有无技能上下文的代码。支持基准测试、静态检查和自定义代码评估。
主要功能
- 01对比有无技能时的代码
- 02运行 Salesforce 基准任务
- 03按五类标准评分
- 04执行静态检查
- 05评估自定义代码
适用场景
- 01衡量技能对 Salesforce 代码的影响
- 02检查代码是否符合 Salesforce 实践
- 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 技能。生成典型的大模型输出——功能可用,但可能缺少 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,不存在注入风险,不包含硬编码凭据 Governor 限制 不在循环中执行 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— 生成元数据 XMLdeploy-cicd-pipeline— 用于 SF 的 GitHub Actionsdata-migration-plan— Bulk API + 关系apex-platform-events— 事件驱动架构
基线生成的关键规则
生成“基线”(不使用技能)代码时,必须刻意生成典型的通用大模型输出:
- 使用
public class(不使用with sharing) - 在 SOQL 中省略
WITH USER_MODE - 在 DML 上省略
stripInaccessible - 直接在触发器主体中编写逻辑(不使用处理器)
- 可以在简单循环中执行 SOQL
- 省略空值检查和错误处理
- 使用基础模式,不采用 Salesforce 特有的优化
这并不是故意编写糟糕的代码,而是要模拟不了解 Salesforce 领域知识的通用 AI 编写代码的方式。基线代码应当功能可用,但缺少平台特有的最佳实践。
参考资料
工作流
- 确定评估模式(基准测试、静态检查或自定义代码)
- 阅读 tasks.json 和 rubric.md
- 生成基线代码和启用技能后的代码
- 根据评分标准为两者评分
- 输出格式化的对比报告
- 如果运行完整基准测试,将结果保存到 evals/benchmarks/results/BENCHMARK.md