eval-authoring
Skill0 starsChanged 4 months agoMITView on GitHub
Author deterministic Steerable eval fixtures for a target integration by deriving cases from its capability registry, validating them against the eval schemas, running them through the target adapter, and emitting coverage plus duplicate-avoidance summaries.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- parsoFish/skillstheir own version, first seen Sep 12, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- parsoFish/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository2 other files it gives its agents.
- integration-auditSkill
- retrofitSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 8 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill when a Steerable integration needs executable eval fixtures for intent routing, policy decisions, reversibility, and …
- Very specific: line 13
Treat evals/README.md, evals/schemas/*.json, evals/validate-fixtures.mjs, and evals/run-fixtures.mjs as the canonical fixture and runner …
- Distinctive: line 14
Treat the target integration registry as the source of truth for actions, read tools, surfaces, facts, examples, guidance, params, risk, …
- Very specific: line 16
Keep real executable fixtures outside samples/.
- Distinctive: line 17
Do not change schemas, the runner, target examples, or adapters while using this skill.
- Distinctive: line 33
read tools by params, reads, guidance, and examples.
- Distinctive: line 46
Use normalized, schema-safe reason codes in expected disclosures and policy reason checks: lowercase ASCII snake_case from adapter output …
- Very specific: line 48
Run all non-sample fixtures through the target adapter with npm --prefix evals run evals -- --target=<target>, or the repo's documented …
- Distinctive: line 64
Stop as soon as these cells are covered.
- Distinctive: line 96
Before writing a fixture, compare the candidate against existing fixtures by:
- Distinctive: line 107
If the candidate only repeats an existing cell with different wording, skip it.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Eval Authoring
Use this skill when a Steerable integration needs executable eval fixtures for intent routing, policy decisions, reversibility, and cross-surface execution.
Ground Rules
- Make zero model or product API calls in the deterministic suite. Fixture authoring, validation, and execution must be local and deterministic. This rule is correct and not waivable. It is also not the definition of done: see
What A Green Suite Does Not ProveandLive Smoke Tierbelow. - Treat
evals/README.md,evals/schemas/*.json,evals/validate-fixtures.mjs, andevals/run-fixtures.mjsas the canonical fixture and runner contract. - Treat the target integration registry as the source of truth for actions, read tools, surfaces, facts, examples, guidance, params, risk, posture, effects, and reversibility.
- Bind every fixture to the exact target
integrationId, registryid, registryversion, and registryrefloaded by the adapter. Do not author against a floating registry. - Keep real executable fixtures outside
samples/. - Do not change schemas, the runner, target examples, or adapters while using this skill. If the dry run exposes a runner or product bug, report it with the failing fixture.
Inputs To Read First
- The work order or issue that asked for fixtures.
evals/README.md, all schema files underevals/schemas/,evals/validate-fixtures.mjs,evals/run-fixtures.mjs, and the target's existing non-sample suites.- The target registry declarations and adapter target metadata.
docs/spec/capability-declarations.md, especiallySA-DECL-107, to keep fixture derivation tied to registry data.skills/integration-audit/references/live-pass.mdbefore reporting a suite as done, so the live smoke tier below is run and reported as theLP-5it is.
Authoring Procedure
- Identify the target tuple from the adapter:
integrationId, registryid, registryversion, and registryref. - Inventory the registry:
- surfaces and which capabilities are live on each surface;
- actions by risk, reversibility, effects, confirmation, params, reads, writes, guidance, and examples;
- read tools by params, reads, guidance, and examples;
- facts and state keys exposed by each surface;
- shipped posture presets the integration actually exposes.
- Scan existing non-sample fixtures before writing anything. Use
skills/eval-authoring/duplicate-avoidance-checklist.md. - Derive candidate cases from the registry:
- turn declared examples into direct intent fixtures only when they are not already covered;
- derive sibling contrasts from guidance, such as one-token color vs full palette preset, copy update vs read-only answer, hide vs show, or metadata update vs share-link copy;
- derive params boundary cases from strict schemas, such as enum values, empty params, required field omissions, and typed booleans;
- derive policy cases from the action risk, reversibility, effects, confirmation, and shipped posture matrix;
- derive reversibility cases from undoable, snapshot, and irreversible declarations plus ledger scope;
- derive cross-surface cases from surface declarations, navigation paths, destination capability readiness, and reversible-prefix behavior.
- Enumerate the coverage cells before selecting fixtures. Use
skills/eval-authoring/coverage-summary-template.mdas the output shape. - Author only fixtures that fill an uncovered cell or strengthen a weak cell with a real registry-derived contrast. Fixture count is not a goal.
- Use normalized, schema-safe reason codes in expected disclosures and policy reason checks: lowercase ASCII snake_case from adapter output or a documented local signal. Do not invent prose-shaped reason codes.
- Validate all fixtures with
npm --prefix evals run validate. - Run all non-sample fixtures through the target adapter with
npm --prefix evals run evals -- --target=<target>, or the repo's documented wrapper command. - Report outcomes faithfully. If a novel fixture fails and the fixture is correct, list the product or runner bug for issue filing instead of hiding or weakening the fixture.
- Re-run the coverage and duplicate scan after adding fixtures. A second application of this procedure should author nothing new unless an uncovered coverage cell remains.
Coverage Definition Of Done
A target suite is done when the coverage summary shows these cells are pinned:
- Target binding: every fixture uses the exact adapter target tuple.
- Surface coverage: every shipped surface appears in at least one relevant fixture, and every cross-surface path worth supporting has success or failure coverage.
- Intent routing: every route class the target router can emit is covered, including answer, single action, action chain, clarification, and refusal or handoff. Only require workflow-loop coverage when the target has a real loop route.
- Policy matrix: every risk level shipped by the registry is covered under every shipped posture, including effect and confirmation floors that materially change autonomy.
- Reversibility: undoable inverse, snapshot restore, irreversible refusal or disclosure, undo-all ordering, and partial undo are covered when the registry ships those mechanisms.
- Mandatory negative cases: clarification, refusal or handoff, policy denial, and undo refusal are all present.
- Params and sibling contrasts: each fixture-worthy params shape or guidance contrast has at least one direct or boundary case, without duplicating existing examples.
Stop as soon as these cells are covered. Do not add fixtures to reach a target count.
Coverage here is coverage of the deterministic suite. It is not a conformance verdict, and it is not the last word on done.
What A Green Suite Does Not Prove
Report this suite's result as the narrow thing it is. A green fixture run proves the target adapter reproduces the expected route, policy, execution, and undo records for these fixtures under deterministic inputs. Say that. It does not prove:
- that a live model produces the routed
{actionId, params}the fixtures assume — a fixture supplies the route rather than earning it; - that the registry's declared IDs and schemas survive a provider's wire format, tool-name grammar, or grammar compiler;
- that published facts describe the real surface rather than schema-valid literals that happen to parse;
- that any surface of the running product loads at all;
- that the datastore write lands, or that undo reverses it against a real store.
Never report "evals pass" as evidence that steering works. A real adopter self-certified minimal conformance with 30/30 fixtures green, 501/501 tests green, and a green build, while every authenticated page threw at load and the mandated cross-surface continuation was impossible by construction. That is what a green suite is compatible with. It is a fact about the fixtures, not about the product.
Live Smoke Tier
The deterministic suite is not the definition of done. A conformance claim additionally depends on a live smoke tier: a handful of real calls, run outside the fixture suite.
- Keep it out of the deterministic suite. Do not add model or product calls to any fixture, adapter,
evals/run-fixtures.mjspath, ornpm --prefix evals run evals. Do not commit it as a fixture and do not run it in CI as one. The zero-call rule is unchanged and stays correct. - Bound it. One to three live model-routed requests total. If the first succeeds, stop. A second only separates a transient network failure from a contract failure. Never sweep utterances, never re-run coverage cells against a live provider, never loop. This is a smoke check, not a suite. Confirm with the human before any run that exceeds three live requests.
- Derive the utterance from the registry, exactly as a fixture is derived: one declared example for an action whose params are non-empty.
- Assert the wire contract, not model quality. The request returns without a provider error; the routed action ID exists in the registry; params are populated and validate against that action's strict schema.
- Empty params on a
200is a failure. It is the silent one, and no fixture can see it. - Record: model ID, the provider's response identifier or usage block, the routed
{actionId, params}, and verbatim provider error text on failure. - Scope: this tier is
LP-5ofskills/integration-audit/references/live-pass.mdand nothing more. Running it does not satisfyLP-1throughLP-4; the full gate lives in that skill. - A provider
5xxis not a contract failure.429,503, and529(overloaded) mean the provider never adjudicated the request — the integration sent nothing wrong. Retry once within the bound; if it persists, reportInconclusivewith the status code, never a failure. Only a4xxindicts the wire contract. - If no live call can be made — no key, no provider access, no budget authorization, or a provider that stays unavailable — report the tier
Inconclusiveand name what is missing. Do not simulate it, do not stub the provider and call the result live, and do not report the deterministic suite as covering it. An honestInconclusiveis the correct result; it blocks a conformance claim, which is what it should do.
Duplicate Avoidance
Before writing a fixture, compare the candidate against existing fixtures by:
- exact
id; - title and description purpose;
- target tuple;
- kind and negative case;
- route class or policy mode;
- action/read-tool sequence and params;
- surface path;
- risk, posture, reversibility, and effect cell.
If the candidate only repeats an existing cell with different wording, skip it. If it covers the same action but a new boundary, sibling contrast, posture, surface path, or negative case, record that distinction in the description.
Required Output
At the end of a run, emit:
- validator and runner results;
- the coverage summary;
- novel fixture inventory with IDs and what each pins;
- duplicate-avoidance evidence;
- second-run result;
- live smoke tier result: model ID, provider response identifier, routed
{actionId, params}, and pass/fail — orInconclusivewith the missing prerequisite; - the suite's claim stated narrowly, never as "steering works";
- bugs exposed, if any.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

