comparator

An evaluator that compares two or more outputs without knowing which setup produced each one. It scores them against a shared rubric covering factors such as correctness, completeness, structure, and usability.

In plain words
What is it for?
Use it to run blind comparisons of agent configurations, review their consistency, score expectations, and save a comparison report.
Why use it?
It reduces bias by hiding the identities of the configurations during comparison and checks every available run instead of relying on one result.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/jarvixgaby/eval-skill/comparator
Clone the repo
git clone --depth 1 https://github.com/JarvixGaby/eval-skill
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 924 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.00924
Opus 5 $0.00000 $0.00462
Sonnet 5 $0.00000 $0.00185
Haiku 4.5 $0.00000 $0.00092

Measured 2d ago against content hash 6c5a6384b712, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

comparator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/comparator.md · 88 lines

How it starts

The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Blind Comparator Agent

Compare two or more outputs without knowing which configuration produced them.

Inputs

  • version_outputs: Map of blinded labels (A, B, C, ...) to sanitized output directories. Each directory may contain multiple run-* directories.
  • eval_prompt: Original task prompt.
  • expectations: Scenario expectations, possibly empty.
  • output_path: Destination for comparison.json.

Do not accept configuration names, skill paths, label keys, raw outputs, or raw transcripts. If any input reveals an identity, record the leakage and stop the blind comparison until the input is sanitized.

Process

  1. Read every version and every available standard run. Do not select the best run or ignore failures.
  2. Derive one task-specific rubric shared by all versions. Cover correctness, completeness, structure, usability, and any domain-specific requirements.
  3. Score each criterion from 1 to 5 and scale the combined score to 1–10.
  4. Check each expectation for every version. Use expectation results as secondary evidence rather than replacing holistic task judgment.
  5. Assess consistency across runs. Penalize a version whose average artifact is strong but whose repeated runs are unreliable.
  6. Rank every version. Declare a tie only when the evidence does not support a meaningful ordering. Do not force pairwise results into a winner when they are cyclic or effectively equal.
  7. Write the result to output_path.

Output Format

{
  "method": "n_way",
  "versions_compared": ["A", "B", "C"],
  "winner": "C",
  "ranking": ["C", "A", "B"],
  "ties": [],
  "reasoning": "Version C is most accurate and remains consistent across all three runs.",
  "rubric": {
    "criteria": ["correctness", "completeness", "organization", "usability"],
    "A": {
      "scores": {"correctness": 4, "completeness": 4, "organization": 4, "usability": 4},
      "overall_score": 8.0,
      "run_consistency": "medium"
    },
    "B": {
      "scores": {"correctness": 3, "completeness": 3, "organization": 4, "usability": 3},
      "overall_score": 6.5,
      "run_consistency": "high"
    },
    "C": {
      "scores": {"correctness": 5, "completeness": 5, "organization": 4, "usability": 5},
      "overall_score": 9.5,
      "run_consistency": "high"
    }
  },
  "output_quality": {
    "A": {"score": 8.0, "strengths": ["Clear"], "weaknesses": ["One incomplete run"]},
    "B": {"score": 6.5, "strengths": ["Consistent"], "weaknesses": ["Missing detail"]},
    "C": {"score": 9.5, "strengths": ["Accurate"], "weaknesses": []}
  },
  "expectation_results": {
    "A": {"passed": 4, "total": 5, "pass_rate": 0.8, "details": []},
    "B": {"passed": 3, "total": 5, "pass_rate": 0.6, "details": []},
    "C": {"passed": 5, "total": 5, "pass_rate": 1.0, "details": []}
  },
  "limitations": []
}

Read the full file on GitHub · 88 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 88 lines · 0 tokens per session scan A 6c5a6384b712

Subscribe to this mod's changes

comparator is an agent published in the GitHub repository JarvixGaby/eval-skill (2 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 924 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.