agentleFS
SentryKnown publishergetsentry/vitest-evals/skills/vitest-evals/SKILL.md

vitest-evals

Skill342 starsChanged 52 days agoApache-2.0View on GitHub

Use when authoring, reviewing, or debugging harness-backed vitest-evals suites, custom Harness adapters, first-party ai-sdk or pi-ai harness integrations, judges, replay, reporter-facing normalized run data, or examples and docs for these APIs.

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use the harness-backed API as the only authoring model.

    line 8
  2. Distinctive:

    Read the package, app, or eval file being changed.

    line 12
  3. Very specific:

    Keep suites close to Vitest: one harness per describeEval(...), explicit run(...) inside each test, ordinary expect(...) assertions over …

    line 14
  4. Very specific:

    Import describeEval(...), judges, and helpers from vitest-evals.

    line 31
  5. Very specific:

    Call run(input) where the test should execute the system.

    line 33
  6. Very specific:

    Use toolCalls(result) and message helpers for normalized session assertions.

    line 35
  7. Very specific:

    Use spans(result), spansByKind(result, kind), and failedSpans(result) for span assertions.

    line 36
  8. Very specific:

    Keep HarnessRun, NormalizedSession, usage, artifacts, and tool records JSON-serializable.

    line 37
  9. Very specific:

    Keep rubric text and parsing in the judge.

    line 40
  10. Distinctive:

    Put scenario-owned criteria on the input value.

    line 42
  11. Distinctive:

    Prefer the smallest command that covers the edited files:

    line 49

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

vitest-evals

Use the harness-backed API as the only authoring model.

First Steps

  1. Read the package, app, or eval file being changed.
  2. Identify the runtime target, then open only the needed reference.
  3. Keep suites close to Vitest: one harness per describeEval(...), explicit run(...) inside each test, ordinary expect(...) assertions over the returned result.

Reference Router

NeedOpen
Write or review a normal eval suitereferences/suite-authoring.md
Build a custom app Harness without a first-party adapterreferences/custom-harness.md
Integrate AI SDK generateText, generateObject, tools, or an AI SDK-style agentreferences/harness-ai-sdk.md
Integrate a Pi AI or Pi Mono-style agentreferences/harness-pi-ai.md
Add custom judges, suite judges, built-in judges, or toSatisfyJudge(...) assertionsreferences/judges-and-assertions.md
Assert on message, tool-call, or span historyreferences/utilities.md
Configure tool recording or replayreferences/tool-replay.md
Diagnose failures, missing traces, odd output, or choose verification commandsreferences/troubleshooting.md

Runtime Defaults

  • Import describeEval(...), judges, and helpers from vitest-evals.
  • Bind exactly one harness to a suite.
  • Call run(input) where the test should execute the system.
  • Assert on result.output for app-facing behavior.
  • Use toolCalls(result) and message helpers for normalized session assertions.
  • Use spans(result), spansByKind(result, kind), and failedSpans(result) for span assertions.
  • Keep HarnessRun, NormalizedSession, usage, artifacts, and tool records JSON-serializable.
  • Report known tokens and USD cost in run.usage. Omit costUsd when unknown; use 0 only when the run is known to be free.
  • Keep rubric text and parsing in the judge. Put provider calls in a judgeHarness, then call them through ctx.runJudge(...) so usage is recorded.
  • Put scenario-owned criteria on the input value. Put direct-check expected values in Vitest case rows. Pass per-case judge criteria through explicit matcher options, and suite-wide criteria through judge config.
  • Custom judges should use createJudge(...) for stable reporter labels.

Verification

Prefer the smallest command that covers the edited files:

TaskCommand
Lint filepnpm exec biome lint path/to/file.ts
Format filepnpm exec biome format --write path/to/file.ts
Test filepnpm exec vitest run path/to/file.test.ts -c vitest.config.ts
Eval filepnpm exec vitest run path/to/file.eval.ts -c vitest.config.ts --reporter=./packages/vitest-evals/src/reporter.ts
Type surfacepnpm typecheck
Package buildpnpm build

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.