agentleFS
leonardoeverling-specleonardoeverling-spec/governed-context/skills/blind-eval/SKILL.md

blind-eval

Skill0 starsChanged 3 months agoMITView on GitHub

Run an honest blind comparison between variants that each produce a comparable output (prompts, models, context regimes, designs, drafts) — with a frozen pre-registration, judgments hash-recorded BEFORE unblinding, and pre-declared analysis only. Use when the user wants to know which alternative is actually better, whether a change helps, or needs a result that survives external audit. Not for opinion-only comparisons where nothing is produced to judge.

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. Tcuzzo/backs-aios-skills★ 2same name
    2. ahmadrishi/agentic-mahoraga★ 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.

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
  1. Distinctive:

    Create one directory per study and keep everything in it:

    line 19
  2. Very specific:

    Write preregistration.md, then it freezes: corrections are new files that reference the old one, never edits.

    line 33
  3. Distinctive:

    ALL post-unblinding analyses, fixed now.

    line 45
  4. Distinctive:

    Run arms in real isolation — and audit invisible channels: CLIs may inject account identity (email, name) into the system prompt, so a "no …

    line 50
  5. Distinctive:

    Do not leak condition details into the chat transcript.

    line 59
  6. Very specific:

    Collection is not validation: Add every collection to index.md as collected_not_adjudicated — an invisible orphan collection is the seed of …

    line 61
  7. Distinctive:

    Use the bundled recorder — it enforces a closed schema, refuses to overwrite, and prints a SHA-256:

    line 72
  8. Very specific:

    When transcribing dictation, record it as spoken and mark your own structuring and any transcription ambiguity as scribe notes in …

    line 86
  9. Distinctive:

    Only after ALL judgments are recorded and hashed.

    line 92
  10. Distinctive:

    Run ONLY the pre-declared analyses.

    line 94
  11. Distinctive:

    Always report: consistency across replicas (variance is a result, not noise to hide).

    line 96

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Blind evaluation protocol

Roles.

  • OPERATOR (usually the agent): prepares material, runs arms, records judgments as scribe.
  • JUDGE: a human, or a clean model instance with no access to preparation material. Whoever prepared or operated does not judge.
  • PRINCIPAL: the human the result is for. Present at unblinding; never unblind alone.

Who judged is study data: human/model, creator/external, and the bias they declared before seeing anything.

Study layout

Create one directory per study and keep everything in it:

study-<name>/
  preregistration.md          frozen after Phase 1
  index.md                    every collection, with status
  collections/<id>/           the material judges see (clean, no badges)
  mapping/<id>.private.json   label -> arm; nobody opens until Phase 4
  judgments/                  append-only records written by the recorder
  analysis.md                 written in Phase 4 only

Phase 1 — Pre-registration (before any material exists)

Write preregistration.md, then it freezes: corrections are new files that reference the old one, never edits.

  • The question, in conditional form that accepts any outcome ("under which conditions does X improve, worsen or not change Y") — never "prove X is better".
  • Arms and exactly what each receives; parity of model, budget and conditions.
  • Observed metadata (effective model id, versions) — a requested alias is never proof.
  • Judgment dimensions + a closed flag list you write for this study. The list from the founding study — invented facts, unsupported grandiosity, irrelevant personalization, leakage, ignored constraints — is an example, not a standard.
  • Proportional reading grid: what EACH possible outcome licenses you to conclude — including defeat and instability ("variance across replicas is the main finding" is a legitimate result).
  • ALL post-unblinding analyses, fixed now. A stopping rule. After this the protocol is frozen: new analysis ideas become proposals for the NEXT study, never amendments to this one.

Phase 2 — Collection

  • Run arms in real isolation — and audit invisible channels: CLIs may inject account identity (email, name) into the system prompt, so a "no context" arm is rarely zero-context. Record what each arm actually received, not what it was supposed to receive.
  • Label variants A/B/C via a recorded shuffle; write it to mapping/<id>.private.json, which nobody opens until all judgments exist — including the operator.
  • Material in collections/<id>/ must be CLEAN: no validation badges, no metadata, no cost figures, no hints. Mechanical validation stays separate, and its failures get audited after judgment (regexes have false positives: // in a comment and an SVG namespace are not external URLs).
  • Do not leak condition details into the chat transcript; if it happens, declare the incident and regenerate clean material.
  • Collection is not validation. Add every collection to index.md as collected_not_adjudicated — an invisible orphan collection is the seed of selection bias. Artifacts outside version control still exist: a clean working tree does not prove an experiment never ran — check the study directory before claiming "never executed".
  • A replica born from an operational mistake enters as declared exploratory, never relabeled as part of the original design.

Phase 3 — Blind judgment

One judgment at a time; between judgments the judge does not re-read technical material.

Use the bundled recorder — it enforces a closed schema, refuses to overwrite, and prints a SHA-256:

node <plugin>/skills/blind-eval/scripts/record-judgment.mjs \
  --study study-<name> --file judgment.json

judgment.json carries: collectionId · judge + judgeBias · viewingOrder · finalChoice (a label, tie or none) · verbatim justification · flags per label · mappingGuess + guessConfidencePct (guess accuracy is its own outcome: it measures whether the treatment has a perceptible signature) · contamination (mandatory; "none" is also a declaration) · optional supersedes.

When transcribing dictation, record it as spoken and mark your own structuring and any transcription ambiguity as scribe notes in dimensionNotes. A missing field is asked of the judge, never filled in for them. Judgment without an instrument degrades into narrative.

Phase 4 — Unblinding and analysis

  • Only after ALL judgments are recorded and hashed. Open the mapping files with the principal present.
  • Run ONLY the pre-declared analyses. New findings are marked post-hoc and become hypotheses for the next study.
  • Always report: consistency across replicas (variance is a result, not noise to hide); guess-versus-preference correlation (if preference tracked the perceived treatment rather than the real one, say so plainly — confident fabrication passes for personalization); recognized-but-not-preferred, if it occurs; the audit of mechanical failures.
  • Record uncomfortable outcomes in the same register as comfortable ones, and state what each does NOT license you to conclude.

Known pitfalls (each one cost a real run)

  • Bulk git add -A sweeps a collaborator's uncommitted work into your commit — stage by path.
  • The judgment page carried per-label validation badges that were cross-referenceable with the chat transcript; it had to be regenerated clean.
  • Five mechanical failures were regex false positives; an apparent "arm X fails more" correlation was coding style, not treatment.
  • The baseline arm received the account email through the CLI — "no context" was actually "account context".
  • Two complete collections sat invisible for three days because they lived outside version control and no one indexed them — and the operator asserted "never executed", twice.
  • A test suite passing 18/18 proved nothing about three live data leaks, because every fixture used the one input style the parser handled. Write fixtures for the styles you did not plan.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.