README.md
June 12, 2026 · View on GitHub
This directory contains Vally evaluation specs for hve-core.
Architecture
evals/
├── skill-quality/ copilot-sdk evals testing skill behavior
├── agent-behavior/ copilot-sdk evals testing agent responses
├── script-validation/ copilot-sdk evals testing deterministic scripts
├── baseline-equivalence/ parameterized baseline-vs-customized equivalence suite
├── behavior-conformance/ Tier 3 advisory conformance for prompts, instructions, and skill behavior
└── skill-hygiene/ vally lint structural checks for .github/skills/
Executors
| Suite | Executor | Purpose |
|---|---|---|
skill-quality | copilot-sdk | Tests that skills provide accurate guidance via real agent conversation |
agent-behavior | copilot-sdk | Tests that agents respond correctly to domain prompts |
script-validation | copilot-sdk | Tests agent reasoning about validation rules (will migrate to mock when available) |
baseline-equivalence | copilot-sdk | Asserts hve-core agent customization preserves baseline model behavior beyond documented divergences |
behavior-conformance | copilot-sdk | Tier 3 advisory conformance for prompts, instructions, and skill behavior (does not fail PR builds) |
skill-hygiene | vally lint | Structural checks for every SKILL.md under .github/skills/; authoritative, no executor calls |
The skill-hygiene suite is the only entry that uses vally lint instead of vally eval. It is a README-only suite (no eval.yaml) that reuses the lint pipeline's static grader registry to validate the skill catalog on every PR that touches .github/skills/. See skill-hygiene/README.md for coverage and grader detail.
Running Evals
# Lint all eval specs (no execution, fast)
npm run eval:lint:vally # vally schema lint
npm run eval:lint:schema # PowerShell schema/shape lint
npm run eval:lint:skills # vally lint over .github/skills/ (skill-hygiene suite)
npm run eval:lint:text # alex.js + retext-profanities (corpus)
# Run all evals
npx vally eval
# Run a specific suite
npx vally eval --suite skill-quality
npx vally eval --suite script-validation
# Compare results against baseline
npx vally compare
Adding New Evals
- Create a directory under
evals/with aneval.yaml. - Choose the executor:
copilot-sdkfor testing skill/agent behavior (non-deterministic, useruns: 3+).mockfor testing scripts/validators with fixture files (deterministic, useruns: 1). Not yet available - usecopilot-sdkuntil the mock executor plugin ships.
- Write per-stimulus graders (one stimulus per test case).
- Run
npm run eval:lint:vally(ornpm run eval:lint:schema) to validate the spec. - Tag stimuli with
categorymatching a suite filter in.vally.yaml.
Anti-Patterns
- Don't use
runs: 1for copilot-sdk evals (non-deterministic output needs multiple runs). - Don't set timeout below
120sfor copilot-sdk evals. - Don't use
output-containsas the sole grader for qualitative agent output. - Don't bundle multiple test cases into one stimulus with an aggregate grader.
- Don't pin models in eval specs.
🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.