Individual skill
eval-driven-dev
Improve AI application with evaluation-driven development. Define eval criteria, instrument the application, build golden datasets, observe and evaluate application runs, analyze results, and produce a concrete action plan for improvements. ALWAYS USE THIS SKILL when the user asks to set up QA, add tests, add evals, evaluate, benchmark, fix wrong behaviors, improve quality, or do quality assurance for any Python project that calls an LLM model.
skills/eval-driven-dev/SKILL.md
Source commit edbecfa9099c4addae1f500cca1ac067204b30fd
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 4, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 40,891
- Repository last updated
- Nov 6, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- ai Repository topic
- github-copilot Repository topic
- prompt-engineering Repository topic
- hacktoberfest Repository topic
- agent-skills Repository topic
- agents Repository topic
- awesome Repository topic
- custom-agents Repository topic
- testing Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesSKILL.mdcore · 17,830 bytesreferences/1-a-project-analysis.mddoc · 5,883 bytesreferences/1-b-entry-point.mddoc · 2,348 bytesreferences/1-c-eval-criteria.mddoc · 7,700 bytesreferences/2a-instrumentation.mddoc · 7,447 bytesreferences/2b-implement-runnable.mddoc · 7,535 bytesreferences/2c-capture-and-verify-trace.mddoc · 5,815 bytesreferences/3-define-evaluators.mddoc · 10,571 bytesreferences/4-build-dataset.mddoc · 22,080 bytesreferences/5-run-tests.mddoc · 6,105 bytesreferences/6-analyze-outcomes.mddoc · 16,606 bytesreferences/evaluators.mddoc · 17,977 bytesreferences/runnable-examples/cli-app.mddoc · 2,022 bytesreferences/runnable-examples/fastapi-web-server.mddoc · 4,149 bytesreferences/runnable-examples/standalone-function.mddoc · 1,811 bytesreferences/testing-api.mddoc · 16,684 bytesreferences/wrap-api.mddoc · 8,984 bytesresources/setup.shruns · 3,169 bytesresources/verify_step6_completion.pyruns · 4,525 bytes
Read excerpt
# Eval-Driven Development for Python LLM Applications
You're building an **automated evaluation pipeline** that tests a Python-based AI application end-to-end — running it the same way a real user would, with real inputs — then scoring the outputs using evaluators and producing pass/fail results via `pixie test`.
**What you're testing is the app itself** — its request handling, context assembly (how it gathers data, builds prompts, manages conversation state), routing, and response formatting. The app uses an LLM, which makes outputs non-deterministic — that's why you use evaluators (LLM-as-judge, similarity scores) instead of `assertEqual` — but the thing under test is the app's code, not the LLM.
During evaluation, the app's own code runs for real — routing, prompt assembly, LLM calls, response formatting — nothing is mocked or stubbed. But the data the app reads from external sources (databases, caches, third-party APIs, voice streams) is replaced with test-specified values via instrumentations. This means each test case controls exactly what data the app sees, while still exercising the full application code path.
**Rule: The app's LLM calls must go to a real LLM.** Do not replace, mock, stub, or intercept the LLM with a fake implementation. The LLM is the core value-generating component — replacing it makes the eval tautological (you control both inputs and outputs, so scores are meaningless). If the project's test suite contains LLM mocking patterns, those are for the project's own unit tests — do NOT adopt them for the eval Runnable.
**The deliverable is a working `pixie test` run with real scores** — not a plan, not just instrumentation, not just a dataset.
This skill is about doing the work, not describing it. Read code, edit files, run commands, produce a working pipeline.