aeon-skill-evals · git:20260512.2331923 · 2026-05-12 · sha256 4c1268ffd43ee9d6
aeon-skill-evals git:20260512.2331923A
Immutable. This exact content is served forever at /api/v1/blob/4c1268ffd43ee9d6.
---
name: aeon-skill-evals
description: |
Validate the output of any installed skill against an assertion manifest — word counts, required
patterns, forbidden phrases, output shape, source citation. Detects regressions before users do.
Bootstrap mode generates a starter manifest from a skill's recent successful runs. Use as a
pre-deploy gate on skill variations, continuous quality monitoring, or to catch hallucinated
output before it goes downstream.
Triggers: "evaluate this skill's output", "check skill X for regressions", "bootstrap evals
for Y", "did this skill output pass quality gates", "is the output of X regressing".
---
# aeon-skill-evals
Quality net for installed skills. Each skill can declare an assertion manifest; every output run is checked against the manifest; failing assertions surface regressions and route concrete fixes.
The job isn't to prevent every bad output. It's to catch the regression the moment it happens and route it to repair before a human notices.
## Manifest format
A YAML or JSON file (e.g. `evals.yaml`) keyed by skill name:
```yaml
token-movers:
min_words: 200
required_patterns:
- "Top movers"
- "24h"
forbidden_patterns:
- "I cannot"
- "as an AI"
- "as a language model"
must_cite_source: true
min_distinct_items: 5
narrative-tracker:
min_words: 400
required_sections:
- "TRANSITIONS"
- "POSITIONS"
- "MAP"
forbidden_patterns:
- "exciting"
- "consider"
must_have_position_call: true
must_name_drivers: true
paper-pick:
required_sections:
- "central claim"
- "why it's worth"
- "where it might be wrong"
- "read order"
must_cite_paper: true
```
Assertion types:
- `min_words` / `max_words` — word count bounds.
- `required_patterns` / `forbidden_patterns` — substring matches.
- `required_sections` — markdown header presence.
- `must_cite_source` / `must_cite_paper` — at least one URL or arXiv link.
- `min_distinct_items` — list-output dedup floor.
- `output_pattern` — regex over the full output.
- Custom binary checks (`must_have_position_call`, etc.) — defined per skill family.
## Operations
| Operation | Description |
|---|---|
| `eval` | Run every manifest-defined skill against its latest output. |
| `eval --skill=NAME` | One skill. |
| `bootstrap --skill=NAME` | Generate a starter manifest from recent successful runs. |
## Regression detection
Compares the current run's assertion-pass set against the prior run:
| State | Meaning |
|---|---|
| **NEW_FAIL** | Passing last run, failing now. Severity scales with prior pass streak. |
| **NEW_PASS** | Failing last run, passing now. Logged as a win. |
| **CHRONIC** | Failing > 3 consecutive runs. Recommendation: disable until human review. |
| **STABLE_FAIL** | Always failing. Indicates a manifest assertion that doesn't match the skill's actual output — flag for manifest review. |
Stored in a local `evals-state.json`.
## Bootstrap mode
Pointed at a skill with no manifest, the skill:
1. Samples the last 5 successful run outputs.
2. Computes:
- `min_words` at p25 of historical runs (so a slightly-shorter run still passes).
- Required patterns from the most common section headers / structural elements.
- Forbidden patterns from a default list (refusals, hedging filler, hallucination markers).
- Custom binary checks where the skill family has them.
3. Emits the proposed manifest for review.
The operator reviews and saves the manifest. The skill never auto-commits a bootstrapped manifest — assertions are observations, and observations need a human signoff.
## Output
```
*Skill Evals — 2026-05-12*
Checked 14 skills against their manifests
PASS (11)
FAIL (2 NEW)
token-movers — forbidden "as an AI" matched in output
Pass streak before failure: 17 runs
Severity: medium (regression, not always-broken)
Recommended: aeon-skill-repair --target=token-movers
paper-pick — required section "where it might be wrong" missing
Pass streak before failure: 8 runs
Severity: medium
Recommended: aeon-skill-repair --target=paper-pick
NEW_PASS (1)
github-trending — back to passing after a fix landed. Closing prior fail record.
CHRONIC (1)
some-skill — failing 4 consecutive runs on "must_cite_source"
Recommendation: operator review. Either fix the skill or relax the assertion.
COVERAGE
3 installed skills have no manifest: huggingface-trending, hn-digest, rss-digest
Run: bankr-run skill-evals bootstrap --skill=<name>
```
## Pipeline position
- **Downstream of**: any skill that writes output you care about.
- **Upstream of**:
- `aeon-skill-repair` (failing assertions → fix targets).
- Operator dashboards (pass rate / regression cadence).
## Guidelines
- Assertions are observations from real output, not specifications. Bootstrap before writing speculatively.
- Forbidden patterns catch hallucination markers and refusals. Keep the list tight; don't lint stylistic choices.
- Chronic failures get a recommendation, not a re-file. Same issue, same response.
- Manifest changes are reviewed; never auto-edited by this skill.
- Coverage gaps (skills without manifests) are surfaced separately — a known unknown is different from a failure.
## Required keys
None — local file evaluation only.
## Pairs with
- `aeon-skill-repair` downstream (consumes failing assertions as fix targets).
- `aeon-autoresearch` when failures are quality-regression rather than deterministic.
- `aeon-skill-security-scan` as a sibling input-safety net.