
Sf Eval
- 37 installs
- 12 repo stars
- Updated July 14, 2026
- clientell-ai/salesforce-skills
sf-eval is an agent skill that benchmarks Salesforce code with vs without skill context and scores results on a Salesforce-specific quality rubric.
About
sf-eval is a Salesforce skills evaluator for builders and skill authors who need evidence that procedural SKILL.md context actually improves Apex and platform code. It runs structured benchmarks: read tasks from the bundled benchmarks JSON, generate a baseline without Salesforce skill knowledge, then generate with full skill context, and score both against a rubric covering security, governor limits, bulkification, patterns, and completeness. Activate on phrases like evaluate skills, benchmark, skill quality, run eval, or compare with/without skills. It works standalone and can optionally lean on Salesforce CLI for static analysis. Solo builders maintaining custom Salesforce skills or deciding whether to adopt Clientell-style packs use it to justify investment and catch regressions when prompts or skills change.
- Compares AI-generated Salesforce code with vs without skill context
- Scores against a Salesforce-specific rubric: security, governor limits, bulkification, patterns, completeness
- Mode 1: run benchmark task(s) from `evals/benchmarks/tasks.json` via `/sf-eval` or task id
- Baseline generation deliberately omits skill knowledge to surface typical LLM gaps
- Optional Salesforce CLI for static analysis; Apache-2.0 skill with fork context
Sf Eval by the numbers
- 37 all-time installs (skills.sh)
- Ranked #382 of 782 Skill Development skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/clientell-ai/salesforce-skills --skill sf-evalAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 37 |
|---|---|
| repo stars | ★ 12 |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 14, 2026 |
| Repository | clientell-ai/salesforce-skills ↗ |
What it does
Benchmark whether Salesforce skills improve Apex and config output by scoring with-vs-without skill context against a Salesforce rubric.
Who is it for?
Salesforce skill maintainers and consultants running repeatable eval tasks to prove skill ROI and Apex quality.
Skip if: Skip if you have no Salesforce work and only need generic JavaScript unit tests unrelated to Apex rubrics.
When should I use this skill?
User mentions evaluate skills, benchmark, skill quality, run eval, compare with/without skills, or invokes `/sf-eval` with an optional task id.
What you get
You get a comparison report with rubric scores for baseline vs skill-augmented generations so you can verify skill value before production merges.
- Comparison report: baseline vs skill-augmented generations
- Per-dimension rubric scores for Salesforce best practices
By the numbers
- Salesforce rubric dimensions: security, governor limits, bulkification, patterns, completeness
- Eval Mode 1: benchmark tasks from evals/benchmarks/tasks.json
Files
Salesforce Skills Evaluator
You evaluate whether Salesforce skills improve AI-generated code quality. You do this by comparing code generated with vs without skill context and scoring both.
Eval Modes
Mode 1: Run Benchmark Task(s)
When user says /sf-eval or /sf-eval <task-id>:
1. Read available tasks from evals/benchmarks/tasks.json 2. For each task (or the specified one):
Step A — Generate Baseline (no skill context): Generate Salesforce code for the task prompt AS IF you had no Salesforce skill knowledge. Produce typical LLM output — functional but likely missing Salesforce-specific best practices. Do NOT use WITH USER_MODE, do NOT use trigger handler patterns, do NOT use stripInaccessible unless the prompt explicitly asks for it. Write code the way a generic AI would.
Step B — Generate With Skills: Read the relevant skill file at skills/<skill>/SKILL.md and its references. Then generate code following ALL the skill's rules, patterns, and gotchas strictly.
Step C — Score Both: Read the rubric at evals/benchmarks/rubric.md and the judge prompt at evals/benchmarks/judge-prompt.md. Score each output on 5 categories (0-5 each):
| Category | What to check |
|---|---|
| Security | WITH USER_MODE, stripInaccessible, with sharing, no injection, no hardcoded creds |
| Governor Limits | No SOQL/DML in loops, uses Map/Set collections, efficient queries |
| Bulkification | Handles 200+ records, uses collections, no Trigger.new[0] |
| Patterns | Trigger handler, service/selector layers, naming conventions |
| Completeness | Requirements met, edge cases, error handling, production-ready |
Step D — Output Report: Format as a comparison table:
## 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%)3. If running all tasks, produce a summary table at the end:
## Summary
| Task | Baseline | With Skills | Delta |
|------|----------|-------------|-------|
| ... | X/25 | X/25 | +X |
| **Average** | **X/25** | **X/25** | **+X (+XX%)** |4. Save the full report to evals/benchmarks/results/BENCHMARK.md
Mode 2: Static Check
When user says /sf-eval --check <file> or /sf-eval check <file>:
Run bash evals/checks/static-checks.sh <file> and show the results.
Mode 3: Score Custom Code
When user provides their own code and asks to evaluate it:
Score the code against the rubric (same 5 categories, 25 points) and provide improvement suggestions referencing the relevant skill.
Available Benchmark Tasks
Read evals/benchmarks/tasks.json for the full list. Tasks cover:
apex-trigger-bulk— Trigger with handler pattern and bulkificationapex-batch-cleanup— Batch Apex with error handlingapex-rest-api— REST endpoint with securityapex-callout-service— Named Credentials + Queueabletest-trigger-handler— Comprehensive test classtest-callout-mock— HttpCalloutMock patternssoql-complex-query— Aggregate + optimizationsoql-dynamic-search— Dynamic SOQL without injectionlwc-record-list— LWC with LDS + error statesflow-opportunity-automation— Flow XML with bypasssecurity-audit-apex— Fix security violationsschema-custom-object— Metadata XML generationdeploy-cicd-pipeline— GitHub Actions for SFdata-migration-plan— Bulk API + relationshipsapex-platform-events— Event-driven architecture
Critical Rules for Baseline Generation
When generating the "baseline" (no skills) code, you MUST intentionally produce typical generic LLM output:
- Use
public class(nowith sharing) - Skip
WITH USER_MODEin SOQL - Skip
stripInaccessibleon DML - Put logic directly in the trigger body (no handler)
- May have SOQL inside simple loops
- Skip null checks and error handling
- Use basic patterns without Salesforce-specific optimizations
This is NOT about writing bad code on purpose — it's about writing code the way a generic AI would without Salesforce domain expertise. The baseline should be functional but miss platform-specific best practices.
References
- Benchmark Tasks — 15 evaluation tasks
- Scoring Rubric — 25-point quality rubric
- Judge Prompt — LLM scoring instructions
- Static Checks — automated code pattern checks
Workflow
1. Identify eval mode (benchmark, static check, or custom code) 2. Read tasks.json and rubric.md 3. Generate baseline and with-skills code 4. Score both against rubric 5. Output formatted comparison report 6. Save to evals/benchmarks/results/BENCHMARK.md if running full benchmark
Related skills
How it compares
Skill-package benchmark harness with Salesforce rubric, not a generic pass/fail linter with no with/without comparison.
FAQ
Who is sf-eval for?
Developers and small teams authoring or adopting Salesforce skills who need measurable before/after quality on Apex and platform patterns.
When should I use sf-eval?
In Ship/testing before trusting generated Apex for release; in Build/agent-tooling when iterating on SKILL.md content; whenever the user mentions evaluate skills, benchmark, or compare with/without skills.
Is sf-eval safe to install?
Check the Security Audits panel on this page; the skill allows Read, Write, Edit, and Bash—run evals only in repos and orgs you control.