# Nexus Eval Harness

> Work on the Nexus LLM eval harness in tests/eval/ — author or fix a scenario fixture, write an eval config, change the executors, assertions or reports, or explain a run that produced nothing, everything-fails, or numbers that disagree. Use when an eval scenario is wrong, a run behaves oddly, or the harness itself needs to change. To grade a model rather than change the harness, use nexus-model-eval.

- Skill: `profsynapse/nexus-eval-harness` (Agent Skill, multi-file: 12 files)
- Install (CLI): `npx skillmds@latest add profsynapse/nexus-eval-harness`
- Raw SKILL.md: https://api.skillmd.com/api/skills/profsynapse/nexus-eval-harness/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ProfSynapse (https://skillmd.com/u/profsynapse)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/profsynapse/nexus-eval-harness

---


# Nexus Eval Harness

Context: the harness under `tests/eval/` drives the **real** production path —
`StreamingOrchestrator` plus tool continuation — with a mock or live tool
executor swapped in, and grades the tool calls a model emits. It is a fixture
system, and almost every surprising result is the fixture talking, not the
model. This skill owns the fixtures, the configs, the executors and the
reports.

## Workflow

1. Pick the job and open its protocol. Work from the protocol; this router
   names procedures, it does not contain them.

   | Job | Protocol |
   |---|---|
   | Add a scenario, or fix one that grades wrongly | `protocols/add-a-scenario.md` |
   | Write or change a config, choose targets, mode, retries | `protocols/configure-a-run.md` |
   | A run produced nothing, all-fails, a hang, or odd numbers | `protocols/debug-a-run.md` |
   | Change the executors, assertions, loader or reports | `protocols/extend-the-harness.md` |

2. Derive every list from the tree, never from this skill. It names no
   scenarios, no configs, no models and no env-var table on purpose, and you
   MUST NOT add one — the harness gains knobs faster than a document survives.

   ```bash
   ls tests/eval/scenarios/ tests/eval/configs/
   grep -rhoE "get(Number|List)?Env\('[A-Z_]+'\)|process\.env\.[A-Z_]+" tests/eval/ \
     | grep -oE "[A-Z][A-Z_]{3,}" | sort -u    # every knob, including the
                                               # ones ConfigLoader mediates
   ```

3. Before calling any scenario change done, run the checker from the repo root
   and fix everything it prints:

   ```bash
   python3 .claude/skills/nexus-eval-harness/scripts/check_scenarios.py
   ```

4. NEVER trust jest's exit code as the verdict on a run, and never report a
   pass rate you read from stdout. The saved reports under the configured
   artifacts dir are the only source of truth, and they are written even when
   the run times out — see `references/run-behavior.md`.

5. At the end of a session that used this skill, run `protocols/self-refine.md`.

## Map

- `protocols/` the procedures named in step 1, plus `self-refine.md`.
- `references/` read on demand: `harness-map.md` (what each file owns and how a
  run is assembled), `scenario-contract.md` (what a scenario fixture means and
  the traps in it), `run-behavior.md` (config resolution, concurrency, retries,
  artifacts, what the numbers count).
- `scripts/check_scenarios.py` the mechanical check from step 3. Run it; do not
  reimplement it.
- `refinement-log.md` what past sessions changed here and why.
- `agents/openai.yaml` an interface manifest several `nexus-*` skills carry.
  Not a subagent prompt; nothing in this skill reads it.

## Siblings — name them, do not duplicate them

- `nexus-model-eval` — **grading models.** Which models to run, whether a slug
  resolves, how to read a leaderboard, and whether a failure indicts the model.
  That skill consumes the harness; this one changes it. If the question is "how
  good is model X", stop here and use it.
- `nexus-testing` — the gate that keeps this suite from running (and billing) in
  CI, and how to watch a run in flight.
- `nexus-agents` — the real `getTools`/`useTools` contract the fixtures imitate.
  When a fixture and production disagree, production wins, and that skill says
  what production does.
- `nexus-llm-adapters` — provider adapters. A run that fails inside streaming
  for one provider only is an adapter problem, not a harness problem.
- `nexus-tool-schemas` — the live tool catalog, for checking a fixture's tool
  slugs against the registry instead of guessing.

