SkillEvaluator Mastery — A From-Scratch, Hands-On Tutorial
This is the from-scratch companion to
docs/15_SKILLS_AND_SKILLEVALUATOR_REFERENCE.md.
Doc 15 is the reference to look things up in; this document is the
progressive, hands-on exercise to actually build the muscle memory —
scaffold a toy skill, watch each tier fire, break it on purpose, and read a
real report. It assumes zero prior SkillEvaluator experience.
The same material is also a course with quizzes, troubleshooting scenarios,
and a scored final exam, on the
course site or as
one downloadable file.
It is also an agent skill,
skills/skillevaluator-mastery/, that
teaches it as a conversation: in a checkout of this repository, say
"skillevalexpert" to Claude Code, Codex, or GitHub Copilot. To use the
skill elsewhere, copy that folder to .github/skills/, .claude/skills/,
.agents/skills/, or ~/.copilot/skills/. This document is the
read-it-yourself version.
0. Before you start
You need: uv (or pip), Python 3.12/3.13, git. Everything through
step 3 below is free and needs no API key, no Docker, and no live model.
Steps 4+ are clearly marked with their real cost/credential requirements —
do not run them without reading the caveat first.
Step 1 — Install Tier 1 only
uv tool install --python 3.13 "skillevaluator[all] @ git+https://github.com/NVIDIA/SkillEvaluator.git"
skillevaluator --version
skillevaluator health-check
If you only want Tier 1 (no security scanning), the plain skillevaluator
extra is enough — see docs/15_... §4 for all the install variants and why
this repository pins an exact commit instead of @main.
Step 2 — Scaffold a toy skill from scratch
mkdir -p /tmp/my-first-skill/evals
Create /tmp/my-first-skill/SKILL.md:
---
name: my-first-skill
description: Say hello in a specific format.
metadata:
author: Your Name <you@example.com>
---
# My First Skill
## Use when
Use this skill when asked to greet someone.
## Procedure
1. Greet the user by name if given.
2. Otherwise greet generically.
This is intentionally minimal — you'll break it on purpose in Step 4.
Step 3 — Run Tier 1 and read the report
skillevaluator quality-check /tmp/my-first-skill
skillevaluator validate /tmp/my-first-skill --no-dedup
Look at:
- The overall quality score and which dimensions it scored on.
- Any advisory findings about missing recommended sections (## Do not use
when, ## Examples, etc. — see docs/15_... §5 for the full list).
- Whether the security scan step ran (it needs gitleaks/SkillSpector
installed separately — docs/15_... §4).
Checkpoint: you should see a passing schema check (the frontmatter has
name, description, and a metadata.author) but likely several advisory
quality findings, because the body is minimal.
Step 4 — Break it on purpose, then fix it
Remove the metadata: block entirely and rerun quality-check. This is a
real, observed failure mode in this repository — the author_format
check fails outright, not just an advisory finding (docs/15_... §5). Put
the block back, then remove the ## Use when section and rerun — this time
notice it's an advisory finding, not a hard failure. This distinction (hard
schema failure vs. advisory quality finding) is the single most useful
thing to internalize about Tier 1.
Now add a skill.yaml at the skill root with placeholder content and rerun
quality-check again — Tier 1's schema check may flag it as an "unexpected"
root file (docs/15_... §5); move it into an allowed layout, or note the
SKILL_EVAL_SCHEMA_ALLOWED_DIRS escape hatch, without treating it as a bug.
Step 5 — Inspect a real report from this repository
Rather than running Tier 3 yourself (see the cost caveat in Step 7), read an already-generated report:
ls reports/*.json
cat skills/portfolio-overview/BENCHMARK.md
Compare the raw JSON's shape (agents, dimensions_with_skill, lift,
pass_at_k, or quality_summary for Tier 1-only reports) against
framework/adapters/nvidia_skillevaluator.py's parse_nvidia_report —
run this in a Python shell to see the normalized shape produced:
uv run python -c "
from framework.adapters.nvidia_skillevaluator import parse_nvidia_report_file
import json
result = parse_nvidia_report_file(
'reports/skillevaluator-output-20260904020239.json',
skill_id='pm.demo', skill_name='Demo', skill_version='0.0.0')
print(json.dumps(result, indent=2)[:2000])
"
Checkpoint: you should be able to say, in one sentence each, what the
raw NVIDIA shape looks like and what this repository's normalized adapter
produces from it — and why the distinction matters (docs/15_... §7).
Step 6 — Understand Tier 2 without spending money
Tier 2 needs a working embedding provider that is not Anthropic. Rather
than configuring one, read catalogs/skill-catalog.json's structure (an
entries list, each with an embedding vector and a content_fingerprint)
and policies/similarity.yaml's governance actions
(EXACT_DUPLICATE → block, HIGH_SIMILARITY → advisory review). Then read
framework/certification/check_similarity.py to see how this repository
turns a raw similarity score into one of those actions.
Step 7 — Understand Tier 3 without spending money (unless you choose to)
Real cost warning, read before running anything here: a full Tier 3
matrix in this repository's own experience took 30-55 minutes and roughly
$15-45 per skill (docs/15_... §2-3, docs/MILESTONE_4_PERFORMANCE_ATTRIBUTION.md).
Instead of running it, read the milestone doc above end-to-end. It walks
through: the exact command used, the four real bugs found (an
agent-compatibility gap, a judge truncation bug, a missing --copy-repo
flag, and API credit exhaustion), and how the final Skill Lift number
(+0.1253) was computed and interpreted. If and when you do choose to run a
real Tier 3 matrix, use the exact command in docs/15_... §4c, and budget
time, Docker, an agent credential, and a separate judge-model credential
via SKILL_EVAL_JUDGE_MODEL.
Step 8 — Understand Tier 4 and certification, on top
Read graders/finance/portfolio_overview.py alongside
skills/portfolio-overview/evals/grader.py to see the thin-hook pattern,
then policies/certification.yaml and
framework/certification/profile_resolver.py to see how this repository
turns raw Tier 1-4 evidence into a pass/fail certification decision that is
explicitly independent of SkillEvaluator's own opinion (docs/02_TARGET_ARCHITECTURE.md,
docs/04_EVALUATION_AND_CERTIFICATION.md).
Self-test checklist
Before considering yourself "SkillEvaluator-literate," you should be able to answer, without looking anything up:
- What does each of the four tiers check, and which are free vs. costly?
- What's the difference between a schema failure and a quality finding?
- Why does Tier 2 need a non-Anthropic embedding provider?
- What does "Skill Lift" mean, and what does a real number (e.g. +0.1253) tell you?
- What are the three easy-to-forget Tier 3 requirements
(
--copy-repo,SKILL_EVAL_JUDGE_MODEL, judge vs. agent credential)? - What's the difference between the raw NVIDIA report shape and this repository's normalized adapter output, and why does that boundary exist?
- Where does SkillEvaluator's job end and this repository's own certification logic begin?
To test yourself on the same material with marked quizzes, scenarios, and a scored final exam, take the course.