Installation
How to invoke
Ask your agent:“Use the apastra-eval skill to run the [suite-name] suite”For a quick eval file:
“Use the apastra-eval skill to run the summarize-quick eval”
Evaluation modes
- Suite mode
- Quick eval mode
Suite mode is the full spec/dataset/evaluator/suite pipeline. Use it for structured, reusable test suites with baseline tracking and regression detection.When you ask to run a suite (for example, “run the summarize-smoke suite”), your agent follows these steps:
1
Load the suite
Your agent reads the suite file from
promptops/suites/<suite-id>.yaml and extracts:datasets— list of dataset IDs to loadevaluators— list of evaluator IDs to applymodel_matrix— models to test against ("default"means the current agent’s model)harness— (optional) identifier for the execution environment; auto-detected if omittedtrials— how many times to run each case (default: 1)thresholds— minimum metric scores required to pass
2
Load dependencies
For each dataset ID, your agent reads
promptops/datasets/<dataset-id>.jsonl (one JSON object per line).For each evaluator ID, your agent reads promptops/evaluators/<evaluator-id>.yaml.For the prompt being evaluated, your agent reads promptops/prompts/<prompt-id>.yaml.3
Run each case
For every case in the dataset, your agent:
- Renders the template — substitutes
{{variable}}placeholders with values from the case’sinputsobject - Calls the model — sends the rendered prompt and captures the full response; if
trials > 1, runs multiple times - Scores the output — applies evaluators and any inline assertions on the case
4
Aggregate the scorecard
Your agent averages each metric across all cases:
5
Check thresholds
Your agent compares each metric against the suite’s
thresholds. If any metric falls below its threshold, the suite fails.Results are reported like this:6
Compare against baseline (if one exists)
Your agent checks for a baseline at If no baseline exists, your agent will note this and suggest running the apastra-baseline skill to establish one.
derived-index/baselines/<suite-id>.json.If a baseline exists, your agent reads the regression policy from promptops/policies/regression.yaml and compares each metric:- For
higher_is_bettermetrics: fail if candidate < (baseline − allowed_delta) or candidate < floor - For
lower_is_bettermetrics: fail if candidate > (baseline + allowed_delta) or candidate > floor
7
Save results
Your agent writes results to
promptops/runs/<run-id>/:Run IDs follow the format
<suite-id>-<YYYY-MM-DD-HHmmss>.run_manifest.json format
Every run produces arun_manifest.json with metadata about how the eval was executed:
Harness identifiers
Theharness field records which execution environment ran the evaluation. The same model can produce different results in different environments due to system prompts, tool availability, and context window handling.
Evaluator types
When processing suite evaluators, your agent applies the following scoring logic:Assertion types reference
Use inline assertions on dataset cases or quick eval cases to apply per-case checks.Deterministic assertions
Model-assisted assertions
Performance assertions
Negate any assertion type by prepending
not-. For example: not-contains, not-regex, not-is-json.
Regression policy format
When a baseline exists, your agent readspromptops/policies/regression.yaml to determine allowed deltas: