run-evals
/run-evals
Uruchamia ewaluacje skilli z ustalonym układem wyników, ocenia asercje i tworzy summary.md dla automatycznych potoków.
- Autor
- rhecosystemappeng ↗
- Repozytorium
- sdlc-plugins ↗
- Licencja
- Apache-2.0
- Ostatnia zmiana repozytorium
- 27.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 4
- Skrypty
- 3
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 27.10.2026, bez odwołań do wycofanych modeli i API.
Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.
- 3 skrypty w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.
Skrypty: scripts/aggregate_benchmark.py, scripts/render_summary.py, scripts/test_render_summary.py
Co robi i kiedy
Uruchamia ewaluacje skilli z ustalonym układem wyników, ocenia asercje i tworzy summary.md dla automatycznych potoków.
Wyzwalacze z opisu
Oryginalny opis (EN)
Run skill evals with deterministic output layout and CI-compatible results. Grades assertions, aggregates benchmark.json, and renders summary.md via Python scripts. NOT skill-creator — this skill produces fixed output paths for automated pipelines. Triggers on "run evals", "eval <skill-name>", "benchmark", or "grade evals".
Jak działa
- Inputs
- Output Structure
- Process
- Rules
Podgląd SKILL.md
---
name: run-evals
description: Run skill evals with deterministic output layout and CI-compatible results. Grades assertions, aggregates benchmark.json, and renders summary.md via Python scripts. NOT skill-creator — this skill produces fixed output paths for automated pipelines. Triggers on "run evals", "eval <skill-name>", "benchmark", or "grade evals".
---
# Run Evals
Run eval cases for a skill, grade each against assertions, and produce
structured results in a deterministic directory layout.
## Inputs
The user provides:
- **Skill name** — the slash-command name of the skill to test (e.g., `plan-feature`)
- **Evals path** — path to the `evals.json` file (e.g., `evals/plan-feature/evals.json`)
- **Workspace** — directory where results are written
## Output Structure
Every run produces this exact layout — no variation:
```
<workspace>/
├── benchmark.json
├── feedback.json
├── summary.md
├── eval-1/
│ ├── grading.json
│ ├── timing.json
│ └── outputs/
│ └── (skill outputs)
├── eval-2/
│ └── ...
└── eval-N/
└── ...
```
## Process
### Step 1 — Read evals.json
Read the evals file and extract:
- `skill_name` — the skill being evaluated
- `evals[]` — array of test cases, each with `id`, `prompt`, `expected_output`,
`files` (optional), and `assertions`
### Step 2 — Execute each eval case
For each eval in `evals[]`, spawn a subagent with this prompt:
```
You are executing an eval for the /sdlc-workflow:<skill-name> skill.
Task: <eval.prompt>
<if eval.files>
Input files (read these before starting):
<for each file in eval.files>
- <evals_dir>/<file>
</for>
</if>
Write all outputs to: <workspace>/eval-<eval.id>/outputs/
Important:
- Invoke the /sdlc-workflow:<skill-name> skill via the Skill tool to process this task
- Write every output file to the outputs/ directory
- Do not interact with external services (Jira, Figma, etc.) — write to files instead
```
**Parallelism:** Spawn all eval subagents in a single turn so they run
concurrently. Do not wait for one eval to complete before starting the
next — the eval cases are independent.
When each subagent completes, capture `total_tokens` and `duration_ms`
from the task completion notification immediately. Write to
`<workspace>/eval-<eval.id>/timing.json`:
```json
{
"total_tokens": <value>,
"duration_ms": <value>
}
```
### Step 3 — Grade each eval case
As each eval completes, spawn a grader subagent. Grading can overlap
with execution — grade each eval as it finishes rather than waiting for
all to complete.
Grader prompt:
```
Grade the outputs of an eval run against these assertions.
Assertions:
<for each assertion in eval.assertions>
- <assertion>
</for>
Outputs directory: <workspace>/eval-<eval.id>/outputs/
## Grading rules
1. Read every file in the outputs directory. Open and read file
contents — do not judge based on filenames alone.
2. Burden of proof is on PASS. Default to FAIL. Only mark PASS when
you find specific, concrete evidence in the output files that
satisfies the assertion.
3. No partial credit. Each assertion is binary: PASS or FAIL.
"Mostly correct" or "partially addressed" is FAIL.
4. Cite specific evidence. The evidence field must quote or reference
exact content from output files — file paths, line excerpts, counts.
Never write vague evidence like "the output generally addresses this."
5. Check structure AND content. Verify both that expected sections/files
exist AND that their content satisfies the assertion.
6. Contradictory evidence means FAIL. If some outputs support the
assertion but others contradict it, the assertion fails.
Write results to: <workspace>/eval-<eval.id>/grading.json
Use this exact JSON structure:
{
"assertion_results": [
{
"text": "<assertion text>",
"passed": true/false,
"evidence": "<specific evidence from output files>"
}
],
"summary": {
"passed": <count>,
"failed": <count>,
"total": <count>,
"pass_rate": <0.0 to 1.0>
}
}
```
### Step 4 — Aggregate into benchmark.json
After all evals are graded, run the aggregation script:
```bash
python3 <skill-dir>/scripts/aggregate_benchmark.py --results <workspace>
```
The script reads all `eval-N/grading.json` and `eval-N/timing.json`
files, computes mean and stddev for pass rate, duration, and token usage,
and writes `<workspace>/benchmark.json`.
### Step 5 — Create feedback.json placeholder
Write `<workspace>/feedback.json` with empty strings for each eval:
```json
{
"eval-1": "",
"eval-2": "",
...
}
```
### Step 6 — Render summary
Determine the baseline path: `evals/<skill-name>/baselines/latest/`.
Read the plugin version from `plugins/sdlc-workflow/.claude-plugin/plugin.json`
(the `version` field). This file is in the base-branch checkout (trusted), not
in the PR content.
Run the render script, passing the skill name and version so the heading
identifies which skill the results belong to and the footer attributes the
output:
```bash
python3 <skill-dir>/scripts/render_summary.py \
--results <workspace> \
--baseline <baseline-path> \
--skill <skill-name> \
--version <version>
```
If the baseline path does not exist, omit `--baseline` — the script
renders results without a comparison.
The script writes `<workspace>/summary.md`. Display its contents to the
user.
When any eval has failing assertions, the summary includes a
"Failed Assertions" section after the per-eval table, before the
aggregate and baseline stats. Each failing eval is rendered as a
collapsible `<details>` block listing the assertion text and grading
evidence for each failed assertion.
## Rules
- Write all outputs to the exact paths specified. No intermediate directories,
no configuration-named subdirectories.
- Every eval case gets its own `eval-<id>/` directory using the `id` from evals.json.
- `grading.json` uses `assertion_results` (not `expectations`) with fields
`text`, `passed`, `evidence`.
- Timing data must be captured from the task completion notification — it cannot
be recovered after the fact.
- Do not launch an eval viewer or browser.
- Do not run baseline comparisons — only run the current skill version.
Baseline comparison is handled by the render script in Step 6.
- `<skill-dir>` is the directory containing this SKILL.md — resolve it from
the absolute path shown in the skill invocation header.
Pliki w paczce (4)
- SKILL.md 6 KB
- scripts/aggregate_benchmark.py 2 KB
- scripts/render_summary.py 6 KB
- scripts/test_render_summary.py 4 KB
Wersje
W bazie nie ma innych skilli o nazwie run-evals.
Migawka bazy z 28.10.2026 · wersja paczki 58c42be7a552 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100skill-evals
Prowadzi pętlę ewaluacji, która mierzy, czy skill poprawia wynik agenta: projektuje przypadki, ocenia je i porównuje z bazą. - 100bmad-eval-runner
Uruchamia ewaluacje skilla i raportuje wyniki: sprawdza triggery, ocenia wyniki, mierzy skill i pomaga zoptymalizować jego opis. - 95skill-benchmarking
Uruchamia benchmarki skilli na zestawach ewaluacyjnych dla różnych modeli i agentów, z porównaniem wyników. - 100plugin-evaluation
Mierzy, czy plugin Claude Code działa, przez ewaluacje wyzwalania (czy model wybiera skill) i ewaluacje wyników (czy daje poprawny rezultat), z harnessem testowym i iteracją opisu skilla. - 100skill-eval-scaffolder
Tworzy szkielet manifestu evals/evals.json z przypadkami bazowymi dla skilli repozytorium, gdy trzeba dodać pokrycie ewaluacjami. - 100run-iteration-eval
Uruchamia pipeline ewaluacji treści Logic-Lens dla jednej iteracji i zapisuje wynik punktowy, żeby zmierzyć zmianę skilla.