Skip to content

chore(evals): author skill evals for implementation (5 skills) - #134

Merged
kyle-sexton merged 4 commits into
mainfrom
chore/evals-implementation
Jul 13, 2026
Merged

chore(evals): author skill evals for implementation (5 skills)#134
kyle-sexton merged 4 commits into
mainfrom
chore/evals-implementation

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

What

Adds rich-form evals/evals.json for five implementation skills — implement, implement-dispatch, build, lint, setup — and bumps the plugin manifest 0.2.00.3.0 so marketplace consumers pick up the new shipped eval component.

Skill Cases Focus
implement 6 bugfix-mode incremental cadence, branch-check stops on default branch, major divergence routes back to planning, never-declares-impossible-without-alternatives, over-correction guard on pushback, autonomous run chains to /implement-dispatch
implement-dispatch 6 autonomous dispatches even when plan is all-main-window, interactive all-main-window hands back to /implement, verify worker return against direct evidence, brief carries scope-fence + divergence clause, non-interactive moderate divergence takes conservative + DEVIATIONS.md, autonomous fresh-context verifier before DONE
build 5 ecosystem auto-detection, missing-tool skip-not-FAIL, consumer config wins over bundled default, build scope excludes lint-only yaml/cross-cutting, clean-tree branch-diff fallback
lint 5 check-mode lint-only detection, --fix mode parse, owns yaml+cross-cutting, missing-tool skip + file-outside-ecosystem silent, no-changes directs to /lint all
setup 4 infer-then-interview before writing, idempotent read-existing-first, writes consumer-tracked config not plugin dir, ambiguous-inference asks not guesses

Each case carries id, kebab-case name, prompt, expected_output, files, and an expectations array of objectively-verifiable checks — modeled on the bug-report rich-form exemplar. No fixtures needed (routing/discipline/guardrail behaviors).

Warrant

All five skills carry judgment-bearing behavioral contracts that could silently regress, so no skip verdicts — including the three the issue flagged as gray-zone (build/lint/setup):

  • implement / implement-dispatch — mode/orchestration routing, divergence handling, scope-fence and over-correction guards.
  • build / lint — ecosystem-detection routing, skip-not-FAIL missing-tool guardrail, consumer-config-wins ladder precedence, and the build-vs-lint scope split (cross-cutting's ** must never leak into /build). These are emit-shape + guardrail contracts, not pure mechanics — cases target the judgment, not "does it detect dotnet".
  • setup — a config-writer skill is explicitly warrantable per the playbook (the codebase-audit/setup eval is the model): interview/infer/write-scope discipline, idempotent read-existing, and the write-only-in-consumer-.claude/ecosystems/ guardrail.

Validation

  • check-jsonschema against plugins/skill-quality/reference/evals.schema.json — all 5 conform.
  • check-skill.sh (skills_root = plugins/implementation/skills) — all 5 PASS, 0 errors. Remaining WARNs are pre-existing skill-body Gotchas-surface items, out of scope for an evals-only PR.
  • scripts/validate-plugins.sh --strict (manifests + catalog) — pass.
  • LF endings, final newline, typos clean.

Version-bump level

The issue left the level unspecified. implementation is one multi-skill plugin, so a single manifest bump covers all five; chose a minor bump (0.2.00.3.0) — evals are an additive, backward-compatible shipped component with no behavioral change to the skills. Matches the docs-hygiene evals-backfill precedent (#132); reversible to patch if a maintainer prefers.

Refs melodic-software/medley#1449


Note

Low Risk
Documentation and test-artifact JSON only; no runtime or skill logic changes.

Overview
Adds rich-form evals/evals.json for five implementation skills (implement, implement-dispatch, build, lint, setup) so judgment-bearing contracts can be regression-tested with prompts, expected_output, and verifiable expectations (no fixtures). Coverage spans orchestration routing and divergence guards, worker verification and scope-fenced briefs, build/lint ecosystem scope and skip-not-FAIL behavior, consumer config ladder precedence, and setup interview/write-location discipline.

Bumps the plugin manifest 0.2.0 → 0.3.0 and documents the release in CHANGELOG as an additive shipped component with no skill behavior changes.

Reviewed by Cursor Bugbot for commit 26d367d. Bugbot is set up for automated code reviews on this repo. Configure here.

Add rich-form evals/evals.json for implement, implement-dispatch, build,
lint, and setup, and bump the implementation plugin 0.2.0 -> 0.3.0 so
marketplace consumers pick up the new shipped eval component.

All five skills warrant evals (no skip verdicts): each carries a
judgment-bearing behavioral contract that could silently regress —
implement (feature/fix/refactor/config mode routing, divergence
detection, scope-fence over-correction guard, never-declare-impossible),
implement-dispatch (autonomous-vs-interactive orchestration routing,
scope-fenced briefs, verify-against-direct-evidence, conservative
non-interactive divergence + DEVIATIONS.md, fresh-context verifier),
build and lint (ecosystem-detection routing, skip-not-FAIL missing-tool
guardrail, consumer-config-wins precedence, build-vs-lint scope split),
and setup (infer-then-interview, idempotent read-existing, write-scope
guardrail, ambiguous-inference-asks). Cases are modeled on the
bug-report rich-form exemplar and validated against
plugins/skill-quality/reference/evals.schema.json.

Refs melodic-software/medley#1449

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 13, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_b4518eca-26fd-4b4a-a00b-14a3c50a53d0)

@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown

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


Code Review — PR #134: evals for 5 implementation skills

Tasks

  • Gather context (CLAUDE.md, MIGRATION-PLAYBOOK.md, evals schema)
  • Read all 5 new evals.json files and the PR diff
  • Read skill SKILL.md files for all 5 covered skills
  • Review against evals schema and project conventions
  • Post findings

Summary

The five evals files are accurate, well-formed, and cover the right contracts. Every expectation I traced back to its source SKILL.md is grounded in documented behavior — no invented or over-promised claims. Schema compliance is confirmed by the PR description's validation steps. No blockers. Three observations below, all minor.


Findings

Observation 1 — implement/evals.json case 1 prompt omits the slash command (intentional, but worth flagging for eval runners)

Line 9 of implement/evals.json

"prompt": "There's a bug in the login flow — expired tokens are being accepted. Fix it."

All other cases in this file use the explicit /implementation:implement prefix. This case tests that the skill detects Bugfix mode from the natural-language 'fix' signal (the disable-model-invocation: false path). That's a valid and important scenario to cover.

However, when evaluators follow the playbook's manual-exercise recipe ("paste its prompt into a fresh session"), this case requires the skill to fire as a model-invoked skill rather than a user-invoked one — which is less predictable than the other five cases. A one-line note in expected_output like "(invoked as a model-invoked skill from natural language — no explicit /implement prefix)" would help eval runners understand the intent rather than wondering if the slash command was accidentally omitted.

Not a correctness issue; a readability hint.


Observation 2 — build/evals.json case 4, expectation 3 slightly over-specifies

Line 55 of build/evals.json

"Does NOT run the `cross-cutting` surface (its `**` glob is never matched by /build); points the user to /lint for those"

The SKILL.md confirms that /build never matches the cross-cutting ** glob and won't run yaml for the workflow file. But the SKILL.md doesn't explicitly promise a redirect suggestion to /lint when those surfaces are encountered in a /build all run — it just silently excludes them. The /build description does say "for lint-only use /lint" so the redirect is reasonable expected behavior, but it isn't specified in the workflow steps.

The expected_output prose ("points the user to /lint for those") reads correctly; it's only this specific expectation item that asserts it as a verifiable check. Worth tightening to "Does NOT run yaml or cross-cutting surfaces; those are /lint-only" if the redirect isn't guaranteed by the skill contract.


Observation 3 — CHANGELOG entry missing date

CHANGELOG.md, new section

## [0.3.0]

Keep a Changelog format calls for ## [0.3.0] - YYYY-MM-DD. If the existing ## [0.2.0] entry also lacks a date this is consistent with the established convention in this file and is not a concern. Only flag if earlier entries have dates.


What's solid

  • Accuracy: every expectation traces cleanly to a documented SKILL.md contract. The autonomy/interactive mode split in implement-dispatch cases 1 and 2, the scope-fence + divergence-escalation clause in case 4, the conservative-option + DEVIATIONS.md in case 5, and the fresh-context verifier gate in case 6 all match the SKILL.md exactly.
  • Coverage per playbook: all five skills hit trigger/routing, happy-path, guardrail, and anti-pattern cases as the playbook recommends.
  • Warrant: the three gray-zone skills (build, lint, setup) are correctly warranted — all three carry judgment-bearing emit-shape and guardrail contracts, not pure mechanics.
  • Schema conformity: all five files satisfy the required skill_name / evals[] / id / prompt fields; name fields are properly kebab-case; expectations items are strings throughout, consistent with other rich-form exemplars.
  • setup evals: closely model the codebase-audit/setup exemplar the playbook names as the reference — three cases parallel exactly (infer-then-interview, idempotent-read-existing, writes-consumer-tracked), with a fourth that covers the ambiguous-inference branch that codebase-audit/setup doesn't.
  • Version bump: minor (0.2.0 → 0.3.0) is the right level — additive, backward-compatible, no behavioral change to the skills themselves. Matches the docs-hygiene evals-backfill precedent.

@cursor cursor 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.

Stale comment

Risk: low. Not approving: Cursor Bugbot skipped (usage limit reached) and did not produce a clean review signal. Human review is needed before merge; no reviewers were assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

@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: ef4cbde69c

ℹ️ 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 plugins/implementation/skills/build/evals/evals.json Outdated
Two minor bot-review improvements (no behavioral change):
- implement case 1 expected_output now notes the case fires as a
  model-invoked skill from natural language (no explicit slash prefix),
  so eval runners understand the intent.
- build case 4 expectation 3 drops the unverifiable "/lint redirect"
  assertion; the verifiable contract is that /build never runs the
  yaml/cross-cutting surfaces.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 13, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_cbbffd60-d7dc-40da-a865-917e5a272f37)

@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown

Code Review — PR #134: evals for 5 implementation skills

Tasks

  • Gather context (CLAUDE.md, PR diff)
  • Read all 5 new evals.json files
  • Read skill SKILL.md files to verify expectation accuracy
  • Review evals schema conformity and project conventions
  • Review Codex and prior Claude findings
  • Post final findings

View job run

@kyle-sexton

Copy link
Copy Markdown
Contributor Author

Thanks for the review. Addressed the two actionable observations in 3c84a44:

  • Obs 1implement case 1 expected_output now states it fires as a model-invoked skill from natural language (no slash prefix), clarifying intent for eval runners.
  • Obs 2build case 4 expectation 3 drops the unverifiable "/lint redirect" claim; the verifiable contract is that /build never runs the yaml/cross-cutting surfaces.
  • Obs 3 — no change: [0.2.0] and [0.1.0] carry no dates, so an undated [0.3.0] is consistent with this file's established convention.

@cursor cursor 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.

Stale comment

Risk: low. Not approving: Cursor Bugbot completed as skipped (usage limit reached) and did not provide a clean automated review signal. Human review is still needed before merge; no reviewers were assigned because the only non-bot contributor is the PR author.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

Codex review (P2): build case 3 sets up a valid tracked dotnet.yaml but
one expectation graded malformed-file degrade behavior — a scenario
mismatch that could fail a correct valid-config answer. Replace that
expectation with a consumer-cmd-wins check, and cover the
malformed-degrades-to-inference guardrail in its own dedicated case 6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 13, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_34b17d13-bec5-4f0d-a8eb-da996a92fd02)

@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown

Code Review — PR #134: evals for 5 implementation skills

Tasks

  • Gather context
  • Read latest diff (84ad0ee — malformed-config split)
  • Read build/evals.json and cross-reference with SKILL.md
  • Verify all 5 evals.json files at HEAD
  • Post final findings

View job run

@cursor cursor 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.

Stale comment

Risk: low. Not approving: Cursor Bugbot completed as skipped (usage limit reached) and did not provide a clean automated review signal. Human review is needed before merge; no reviewers were assigned because the only repository contributor is the PR author.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

@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: 84ad0ee7e5

ℹ️ 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 plugins/implementation/skills/lint/evals/evals.json Outdated
…case

Codex review (P2): lint case 4 expected a missing-tool `skip` for
markdown, but /lint honors opt-in first — without a markdownlint config,
silently skipping markdown is the correct behavior, which could penalize
a valid answer. State in the prompt that the repo has opted into
markdownlint (config present) so the missing-tool skip is the
unambiguously-graded behavior.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 13, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_594bb4e0-9282-436d-ac71-7b49c0aadd7d)

@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown

Code Review — PR #134: evals for 5 implementation skills

Tasks

  • Gather context
  • Read the full diff at HEAD (26d367d)
  • Read all 5 evals.json files and lint/build SKILL.md to verify expectations
  • Verify Codex markdownlint finding was addressed in latest commit
  • Post final findings

View job run

@kyle-sexton
kyle-sexton merged commit ff5adc4 into main Jul 13, 2026
19 of 22 checks passed
@kyle-sexton
kyle-sexton deleted the chore/evals-implementation branch July 13, 2026 01:43

@cursor cursor 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.

Risk: low. Not approving: Cursor Bugbot completed as skipped (usage limit reached) and did not provide a clean automated review signal. Human review is needed before merge; no reviewers were assigned because the only repository contributor is the PR author.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

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.

1 participant