Skip to content

docs: record why this marketplace's eval format is not claude plugin eval's - #3102

Merged
kyle-sexton merged 3 commits into
mainfrom
claude/record-eval-format-decision
Aug 21, 2026
Merged

docs: record why this marketplace's eval format is not claude plugin eval's#3102
kyle-sexton merged 3 commits into
mainfrom
claude/record-eval-format-decision

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

No linked issue.

Summary

docs/MIGRATION-PLAYBOOK.md "Evals" already states that no first-party command executes model-graded
evals and names the tracker for the deferred runner. What it never says is which eval format the
203 shipped suites are in, or how that relates to the claude plugin eval command — so a reader who
meets that command reasonably concludes the repo has drifted from it.

That conclusion is wrong, and it cost real work: three rounds on #3063 built machinery to make an
eval prompt literally executable — a scratch git repo, a pinned config cascade, unset GIT_DIR
before anyone established that nothing executes an eval prompt here. All of it was deleted. This
records the fact that would have prevented it.

Fix

Two Anthropic-owned eval formats exist and they are not the same.

The shipped one is skill-creator's: evals/evals.json inside the skill directory, cases
carrying id / prompt / expected_output / files / expectations — which is why
evals.schema.json's own description notes that upstream names that last field assertions. It is
the ecosystem-wide shape; a public code search returns thousands of evals.json files in that form
against a handful in any other.

claude plugin eval consumes a different layout<eval dir>/**/case.yaml, or prompt.md plus
graders/*.md, with experimental.evals naming the directory. This repo has none of it,
deliberately: the command is early access and refuses to run.

$ claude plugin eval plugins/evals
`plugin eval` is currently in early access

Adopting its format today would trade a corpus CI checks on every PR for one nobody here can execute.
Adoption stays deferred behind the same melodic-software/medley#1418 tracker as the runner.

The paragraph closes with the consequence authors actually need: because nothing executes a prompt,
a prompt must be readable and followable by a human or an agent working by hand, and must not assume
a runner will stage anything for it.
That is the sentence #3063 needed and did not have.

Also reconciles a stale acceptance criterion. docs/specs/write-for-agents-brief.md named a
"shipped claude plugin eval suite" as the artifact settling its trigger-families criterion, while
the skill actually shipped in #3003 with the house format. The criterion now describes what gates it
in fact — a written specification checked by check-evals-quality.sh and exercised by hand per the
playbook's recipe — rather than a pass/fail command run that never happened.

Verification

The determination behind this was produced by a read-only investigation and then re-checked directly:

Claim Evidence
The playbook already owns this decision MIGRATION-PLAYBOOK.md "Evals — warrant policy and consumer-verify recipe": "no first-party command that executes model-graded evals today"
The authoring skill says so too plugins/evals/skills/design/SKILL.md — "does not execute evals", in its always-loaded description
Schema records the upstream provenance evals.schema.json description cites skill-creator's assertions naming
The command is gated plugin eval is currently in early access — reproduced above
Nothing under plugins/ changed git diff --name-only | grep -c '^plugins/' → 0, so no version bump
markdownlint-cli2, typos, editorconfig clean

Docs-only, two files, +21/−2.

Related

What this does not settle

Whether claude plugin eval predates this repo's format could not be established: the public
anthropics/claude-code changelog has zero entries for it through 2.1.238, and dating the npm
package means bisecting a 331 MB binary. It does not matter for this decision, because the format's
provenance turned out to be a different Anthropic surface rather than that command — but the timing
claim is not made here, and should not be inferred from this text. Early-access availability may also
differ per account; this was tested on one.


Generated by Claude Code

… eval`'s

The Evals section states that no first-party command executes model-graded
evals, but never says which format the shipped suites are in or how it relates
to the `claude plugin eval` command, so a reader who meets that command
reasonably reads 203 evals.json files as drift.

They are not. The shipped format is skill-creator's, which is why the schema
notes upstream's `assertions` naming, and it is the ecosystem-wide shape. The
command consumes a different layout and is early access — it refuses to run —
so adopting it would trade a corpus CI checks for one nobody here can execute.
Adoption stays deferred behind the same tracker as the runner.

Also reconciles write-for-agents-brief.md, whose acceptance criterion named a
`claude plugin eval` suite as its settling artifact while the skill shipped in
 #3003 with the house format. The criterion now describes what actually gates it.

Found while diagnosing #3063, where three rounds of work built machinery to make
an eval prompt literally executable before establishing that nothing executes
one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b965819795

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/MIGRATION-PLAYBOOK.md Outdated
@claude

claude Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 2m 24s —— View job


Claude finished the code-review lane for this PR

  • Gather context (PR diff, description, comments)
  • Run /review:code-review skill procedure
  • Post inline findings (if any)
  • Final summary

Summary

Reviewed both changed files against origin/main...HEAD (docs-only, +21/−2) per the CI code-review lane's criteria (plugins/review/skills/code-review/SKILL.md, REVIEW.md).

No blocking or high-signal findings. This is a well-substantiated documentation change, and I independently checked its central factual claims rather than restating the author's own verification:

  • plugins/skill-quality/reference/evals.schema.json's description field does say the rich-form expectations field is "the upstream-named assertions; skill-creator upstream uses assertions" — matches the new paragraph's claim in docs/MIGRATION-PLAYBOOK.md L339.
  • plugins/skill-quality/scripts/check-evals-quality.sh exists, matching the reference added at docs/specs/write-for-agents-brief.md L61.
  • The MIGRATION-PLAYBOOK.md "<short heading>" citation shorthand used in the brief ("Evals" for the full heading Evals — warrant policy and consumer-verify recipe) matches the established citation convention already used elsewhere in docs/ (e.g. docs/conventions/ecosystem-commands/README.md), so it's not a new inconsistency.
  • The two edits are mutually consistent: the brief's updated acceptance criterion now points at the same format/consumer-verify story the playbook paragraph establishes, and both cite the same melodic-software/medley#1418 tracker already used elsewhere in the file.

I could not independently verify the plugin eval is currently in early access CLI reproduction or the #3003 shipping reference — those are author-claimed and I have no tool access to re-run them here; I'm noting that rather than restating them as confirmed. I also did not run markdownlint-cli2/typos myself (no network-installable tooling available in this sandboxed environment), so the PR's own linting claims are unverified by me, not confirmed.

Given the high-signal bar for this lane (exclude linter-catchable issues, pre-existing issues, style nits, and unverifiable generic advice), I found nothing to flag as a blocking or important finding, so no inline comments were posted.

Branch: claude/record-eval-format-decision

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown

Claude has reviewed this PR 2 times. The lane skips further automatic reviews after 5; deleting this comment resets the count.

claude added 2 commits August 21, 2026 14:34
…enerally

The paragraph asserted that nothing executes an eval prompt, and told authors
not to assume a runner would stage anything. Both overreach. This repo's own
surfaces are scoped more carefully: plugins/evals/skills/design/SKILL.md and
that plugin's README say no MARKETPLACE command runs model-graded evals, and
name Anthropic's skill-creator as a runner a consumer may have installed — the
runner belonging to this very format.

Left as written, the guidance would have pushed authors toward cases that are
incompatible with skill-creator's staging, which is the opposite of the intent.

The corrected text keeps what is true and load-bearing — nothing here runs
these, so a case must be followable by hand — and replaces the false half with
the actual rule the #3063 apparatus violated: declare fixtures in files[] and
reference them by their documented path, rather than hand-rolling staging in the
prompt string. A prompt that builds its own workspace is neither followable by
hand nor compatible with the runner that would otherwise stage it.

Found by review on #3102.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@claude

claude Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 3m 20s —— View job


Claude finished the code-review lane for this PR

  • Gather context (PR diff, description, comments)
  • Run /review:code-review skill procedure
  • Post inline findings (if any)
  • Final summary

Summary

Reviewed origin/main...HEAD (docs-only, 2 files, +26/−2) per plugins/review/skills/code-review/SKILL.md and REVIEW.md's code-review-lane scope. This head (b74140c) includes commit 123d464, which already reworked the MIGRATION-PLAYBOOK.md paragraph in response to the Codex review comment on this PR (scoping the "no runner executes this" claim to this marketplace, and adding the skill-creator-as-runner / files[]-staging carve-out) — I re-checked that fix rather than re-flagging the same issue Codex already raised.

One finding, not carried by any changed line, so it's here rather than inline:

docs/specs/write-for-agents-brief.md's own TLDR still contradicts the fix this PR makes two dozen lines below it.
L17 reads "with trigger reliability gated by a shipped eval suite" — unchanged by this PR. But the acceptance criterion this PR edits at L54-62 now explicitly says the opposite: the suite is "a written specification checked by check-evals-quality.sh, exercised by hand per that section's recipe, rather than a pass/fail gate on the implementation PR." Before this PR both lines agreed (the old criterion text also said "suite passing gates the implementation PR"); after this PR's fix, the TLDR is now the one remaining place in the file asserting the gate that the rest of the document just finished disclaiming. Since the entire point of this PR is correcting the "something executes/gates on this" misconception, leaving it standing in the doc's own TLDR — the part most likely to be read — seems worth fixing in the same pass. A minimal fix would swap "gated by" for language matching the corrected criterion, e.g. "checked by hand against a shipped eval suite."

Verified independently (not just restating the author's claims):

  • plugins/evals/skills/design/SKILL.md:88-90 confirms "Does not execute evals... Anthropic's skill-creator plugin can run skill evals when installed" — matches the new MIGRATION-PLAYBOOK paragraph.
  • plugins/skill-quality/reference/evals.schema.json confirms the files field ("Optional list of fixture file paths required by this case") and the assertions/expectations upstream-naming note.
  • Fetched code.claude.com/docs/en/skills#run-evals-with-skill-creator directly: it confirms skill-creator's eval loop stores "prompts, input files, and expected behavior" in evals/evals.json and spawns an isolated subagent per test case — consistent with, though not verbatim identical to, the new paragraph's claim that the runner "stages a case's files[] for it." Not a fabrication; reasonable characterization of documented behavior.
  • plugins/docs-hygiene/skills/write-for-agents/evals/evals.json and .../evals/fixtures/ exist, confirming the brief's updated criterion ("the shipped evals/evals.json suite") describes what actually shipped.

Could not verify (no network/gh access to confirm against GitHub, consistent with the earlier automated review's own caveat): the #3003 shipping reference, and the plugin eval is currently in early access CLI reproduction quoted in the PR body. Not contradicted by anything I found — the write-for-agents build issue is referenced elsewhere as #2962 (plugins/docs-hygiene/CHANGELOG.md:142), which is plausibly the tracking issue rather than the shipping PR, so no inconsistency, just unverified.

No other correctness or maintainability issues found in the diff. Security lane exists in this repo (claude-security-review.yml), so security scope is out of bounds for this lane and n/a here anyway (docs-only change, no code).
· Branch: claude/record-eval-format-decision

@kyle-sexton
kyle-sexton merged commit 2ab3b37 into main Aug 21, 2026
50 checks passed
@kyle-sexton
kyle-sexton deleted the claude/record-eval-format-decision branch August 21, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants