skillevaluator
Run and interpret SkillEvaluator for agent skills. Use for any skill benchmark or eval - validating or scoring a SKILL.md, writing evals.json test cases or evals config, explaining benchmark reports,
Files12
View on GitHubSKILL.mdskills/skillevaluator/SKILL.md
GitHubSkillEvaluator
Run the SkillEvaluator CLI on agent skills and report what the evidence shows: Tier 1 validation (static, security, quality), Tier 2 deduplication, and Tier 3 live agent evaluation that compares runs with and without the skill.
Purpose
Give an agent one reliable procedure for evaluating skills with SkillEvaluator: pick the right tier, check readiness, run it, and report scores, findings and exit codes truthfully.
When To Use
Use this skill when the user wants to:
- check whether a skill is well-formed, safe, and good enough to publish
- get a quality score, rubric score, security or PII scan for a skill
- find repeated guidance inside a skill or overlap across a skill collection
- measure whether a skill actually helps an agent (Skill Lift, pass@k)
- write or fix
<skill-dir>/evals/evals.json,<skill-dir>/evals/config.yml, custom graders, or Harbor tasks - read a SkillEvaluator report, verdict, or exit code
- add SkillEvaluator checks to GitHub Actions or GitLab CI
Do not use it to write the target skill's domain content, to review ordinary application code, or to evaluate an LLM without a skill. For converting an existing benchmark into a custom grader, read references/custom-graders.md.
Prerequisites
- A target directory containing
SKILL.md(or a folder of skills,.mdcrules, or a plugin manifest). - The CLI:
pip install --upgrade "skillevaluator[all]", or from a checkoutuv run --python 3.13 --extra all skillevaluator .... Check withskillevaluator --version. Extras:llm(rubric),security(scanners),tier2,tier3,all,dashboard. - No key for keyless commands (
quality-check,security-scan,pii-scan,lint-scripts,tier1 PATH --no-llm,validate PATH --tiers 1). - A provider for LLM stages, Tier 2 and Tier 3. Simplest:
export SKILL_EVAL_LLM_PROVIDER=nv_buildandexport NVIDIA_API_KEY=.... Other providers: references/providers.md. - For Tier 3: an agent (
opencode,codex, orclaude-code) and a sandbox. Harbor is installed with thetier3extra; you do not run it yourself. The default--env-mode dockerneeds a Docker daemon. Without Docker, use--env-mode local(experimental): it runs the agent CLI already installed on the host under Bubblewrap (Linux) or Seatbelt (macOS); trusted skills only.
Never print, echo, or commit API keys; keep them in the host environment.
Choose The Command
| User goal | Command | Needs |
|---|---|---|
| Fast keyless quality score | skillevaluator quality-check <skill-dir> |
nothing |
| Full static gate for one skill | skillevaluator tier1 <skill-dir> --no-llm |
scanners (auto-installed) |
| Static gate plus LLM rubric and security review | skillevaluator tier1 <skill-dir> |
provider |
| LLM rubric only | skillevaluator rubric-eval <skill-dir> |
provider, llm extra |
| Security / PII scan only | skillevaluator security-scan <skill-dir>, skillevaluator pii-scan <skill-dir> |
nothing |
| Repeated content inside one skill | skillevaluator tier2 <skill-dir> |
provider with embeddings |
| Overlap across a collection | skillevaluator similarity-check <skills-dir> |
embeddings |
| Does the skill help an agent? | skillevaluator tier3 <skill-dir> |
provider, agent, Docker |
| Same, without Docker | skillevaluator tier3 evaluate <skill-dir> -a opencode --env-mode local |
provider, agent CLI on host |
| Everything, with one exit code | skillevaluator validate <skill-dir> |
all of the above |
| CI-safe keyless gate | skillevaluator validate <skills-dir> --profile default --tiers 1 -r json,markdown,sarif -o reports |
scanners |
| Set up repo CI | skillevaluator ci init |
GitHub checkout |
Full flag tables: Tier 1, validate, Tier 2, Tier 3 and setup.
Workflow
- Locate the target. Confirm the path has
SKILL.mdand that its frontmatternamematches the directory name. For a folder of skills, the commands evaluate each skill inside it. - Check readiness before paid runs. Run
skillevaluator health-check --tier 1for scanners,skillevaluator doctor --tier 2for providers, andskillevaluator doctor --env-mode docker(add--verify-models) for Tier 3. Fix every failing row first. - Start keyless. Run
skillevaluator tier1 <skill-dir> --no-llm. Fix CRITICAL and HIGH findings before anything else;lintfindings are advisory. - Add LLM checks when a provider is set:
skillevaluator tier1 <skill-dir>(rubric, LLM security, verification) andskillevaluator tier2 <skill-dir>. - Prepare Tier 3 cases. If
<skill-dir>/evals/evals.jsonis missing, generate one withskillevaluator create-eval-dataset <skill-dir> --full, then review it: positive cases (explicit, implicit, contextual) and at least one negative case with"expected_skill": null. Required shape: top-levelskill_nameand anevalsarray; each case hasid,prompt,expected_output, andexpected_skill(optionalassertions,files). Validate withskillevaluator tier3 validate <skill-dir> --strict. Format: references/tier3-datasets.md; run policy and scoring: references/tier3-running.md. - Run live evaluation.
skillevaluator tier3 <skill-dir>(orskillevaluator tier3 evaluate <skill-dir> -a opencode --env-mode docker --n-attempts 3). Use--max-cases 1for a cheap smoke run first; such runs are never publication evidence. - Read the results (see below), open
skillevaluator view <skill-dir>, and for follow-up questions runskillevaluator tier3 feedback <run-dir>. - Iterate. Change the skill, rerun the same command with the same cases, agent and model, and compare. Treat a single run's lift as directional.
Read The Results
Exit codes: 0 success, 1 a gate failed, evidence is INCOMPLETE, or the
run could not complete, 2 usage error (bad flag or missing path; fix the
command, not the skill).
- Quality (0-100): Correctness 35%, Discoverability 25%, Reliability 25%,
Efficiency 15%. Grades A>=90, B>=80, C>=70. Passing needs
--min-score(default 70) and no HIGH/CRITICAL quality finding. - Rubric (0-100): nine criteria scored 0-10; passing needs the weighted
score >=
--min-scoreand every criterion >= 7. - Tier 2: HIGH or CRITICAL duplicate findings exit
1intier2 PATH. - Tier 3: five dimensions (Security, Correctness, Discoverability,
Effectiveness, Efficiency), each PASS >= 0.50, NEUTRAL 0.40-0.50, FAIL < 0.40.
Verdict PASS needs every dimension >= 0.50 for at least one agent. Skill
Lift = with-skill overall - baseline overall; PASS >= +0.05.
INCONCLUSIVE: skill never activatedmeans no positive trial loaded the skill; fix the description or prompts, not the scores.tier3 PATHexits0on aFAILverdict; only an incomplete run exits1. - Missing scores are
NO SCOREorNone, never 0. Do not average them in. - Publication: require
publication_status == "pass"in the JSON report, not justoverall_passed.
Report anatomy and JSON fields: references/reports-and-ci.md.
Examples
# Keyless first look
skillevaluator quality-check <skill-dir> -r cli -r json -o <report-dir>
# Static gate for a whole collection, complete report even on failures
skillevaluator validate <skills-dir> --profile default --tiers 1 -c -r json,markdown -o reports
# LLM-backed Tier 1 and Tier 2, dedup advisory
skillevaluator validate <skill-dir> --tiers 1,2 --llm --no-block-on-dedup
# Live A/B evaluation with two agents, retaining trajectories for debugging
skillevaluator tier3 evaluate <skill-dir> -a opencode,codex --n-attempts 3 --harbor-keep-jobs
# Baseline only, to calibrate cases before the skill exists
skillevaluator tier3 evaluate <skill-dir> --skip-with-skill
Limitations
- Tier 1 and the quality score are static: they check structure and wording, not whether the skill works. Only Tier 3 observes agent behavior.
- LLM judges (rubric, Tier 3 correctness/effectiveness) vary between runs and models; compare runs only with the same model, cases, and attempts.
- Tier 3 costs model tokens and sandbox time per case x attempt x agent x 2 arms; a generated starter case gives limited coverage.
validate --tiersalways includes Tier 1;--tiers 2or--tiers 3alone is rejected. Usetier2 PATHortier3 PATHto run a tier on its own.- Agent credentials come only from the host environment;
<skill-dir>/evals/config.ymlruntime_envrejects provider keys.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
Exit 2 |
Unknown flag, bad value, or missing path | Check skillevaluator <command> --help; prefix paths named like commands with ./ |
Check shows INCOMPLETE |
A scanner is missing or failed | Run skillevaluator health-check --tier 1; install the security extra or the missing scanner |
"provider is required" / exit 1 before reports |
No SKILL_EVAL_LLM_PROVIDER or key, or several keys exported |
Set exactly one provider and its key; see providers reference |
| Quality below 70 | Missing ## Prerequisites, ## Limitations, ## Troubleshooting, vague description, no examples |
Read each finding's suggestion; do not stuff keywords |
INCONCLUSIVE: skill never activated |
Description does not match the prompts | Make the description name the tasks; add explicit-bucket cases |
| Docker trials fail to start | Daemon down or outdated engine | docker info; rerun skillevaluator doctor --env-mode docker |
| Agent model rejected | Default model not valid for that agent | --agent-model AGENT=MODEL, verify with doctor --verify-models |
Run incomplete (Scored attempt coverage is n/m) |
A trial errored or timed out | Rerun; raise --timeout-multiplier; inspect with --harbor-keep-jobs |
More cases: references/troubleshooting.md.
Final Response
Report to the user:
- the exact commands run and their exit codes
- scores and verdicts per tier, quoting the report values (not estimates)
- the top findings to fix, each with its file and suggested change
- report paths (
<report-dir>/...,<skill-dir>/evals/results/<run-id>/report.html) - what was not run (skipped tiers, missing keys,
--max-casessmoke runs) and therefore not proven