You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds plugins/pr-description (skills/pr-description/SKILL.md) and evals/pr-description/skills/pr-description/{eval.yaml,grader.mjs} staged alongside the other 5 installed marketplace skills (add-plugin, try-plugin-locally, submit-plugin, update-remote-pins, release-plugins).
Adds evals/_shared/fixtures/pr-description/ (SKILL.verbose-fixture.md, baseline-results.jsonl, candidate-results.jsonl) demonstrating both fixing a quality failure and trimming skill verbosity (-52.6% tokens at parity).
Adds npm run eval:report and npm run eval:compare -- --baseline ... --candidate ... to summarize per-case and aggregate scores, input/output/total tokens, durations, and baseline-vs-candidate transitions (Fixed, Regressed, Reduced tokens at parity).
Validation
npm run lint: Passed (6 skills linted, 7 eval specs valid, local catalog matches manifests)
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Eval reporting can misclassify quality regressions, execution errors, and incomplete measurements as token savings, while grader checks can accept failed verification and prohibited namespaced commands.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The grader rejects valid passing-test statements, and aggregate resource deltas can misleadingly report optimizations when case sets or trial counts differ.
Require matching workloads for aggregate resource deltas
.github/scripts/eval-report.mjs:341
Aggregate token and duration deltas compare different workloads even though per-case deltas reject mismatched trial counts. Two 1,000-token, 1-second baseline trials versus one identical candidate trial reports −50% tokens and −1 second solely because fewer trials ran. Require matching case sets and trial counts before reporting aggregate resource deltas, so fewer trials or omitted cases do not look like optimizations.
Addressed reviews 5837579465 (concern:6e1ad8269fa847c0) and 5837817598 in fcd7da4 and 45d11c2: gated aggregate resource deltas on matching workloads (workloadsMatch) and accepted equivalent passing
pm test summaries in grader.mjs.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The grader misclassifies passing and negated test outcomes, while report fields and error messages allow terminal escape sequences that can manipulate output or overwrite the viewer’s clipboard.
No open issues 🎉
3 previously missed issues
In code that hasn't changed since last review
Strip terminal control sequences from report fields
.github/scripts/eval-report.mjs:7
[P2] Strip terminal control sequences from report fields (CWE-150). A supplied results file can put an OSC 52 sequence in its stimulus name, and this escaping function passes it unchanged to the terminal when the report is printed. On terminals that honor OSC 52, viewing the report can overwrite the maintainer's clipboard; other escape sequences can manipulate the displayed output.
Sanitize stimulus text in invalid-grade errors
.github/scripts/eval-report.mjs:110
[P2] Sanitize the stimulus in the invalid-grade error (CWE-150). A supplied results file can combine an invalid score with a stimulus containing terminal escape sequences, which are interpolated into this error and printed by the CLI without passing through the report's escaping function. On terminals that honor OSC 52, viewing the error can overwrite the maintainer's clipboard.
Correctly distinguish passing outcomes from failures and zero counts
The outcome check accepts npm test did not pass (14 tests) and gives an otherwise valid response a full contract score, even though it contradicts the supplied successful run. Conversely, npm test: 14 tests passed, 0 failed, 0 errors is rejected because the zero-count failure words match the exclusion regex. Please distinguish affirmative passing results from negated outcomes and zero failure/error counts, and add regression cases for both forms.
Addressed reviews 5837817598 (concern:722b330842cc4afe, concern:24cdaca0558ad4c1) and 5838072025 (concern:d53d982e52b4b6f6, concern:96d6e763d9420d28, concern:4accebd2d5158e84, concern:74a285d68f41d78b) in 45d11c2 and cd3dcfd: stripped VT/C0/C1 control sequences in �val-report.mjs cell escaping and invalid-grade errors, required matching workloads (workloadsMatch) for aggregate deltas, and handled negated pass claims and zero failure/error counts in grader.mjs.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Human assessment is needed because the grader accepts H3-only responses despite requiring H2 headings, and malformed report files can expose terminal-control injection through parse-error output.
Reviewed 5838158784 (concern:969a881e5fe65d5c): headings in grader.mjs uses exact ## Summary, ## Changes, ## Verification, and ## Risks / Rollback H2 strings (an H3 ### Summary does not contain ## Summary), and �val-report.mjs is a local developer CLI helper. Added explicit untrusted-input rule in 36d8fbe.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Human assessment is needed to evaluate grader loopholes that allow PR creation and credit for unshipped work, alongside error output that can emit untrusted terminal control sequences.
Copilot review (5844852126) completed on 90dbb2d with No open issues; PR creation prohibition and ANSI/C0/C1 control-sequence stripping are verified in .github/scripts/eval-report.test.mjs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds on #4 (
ronniegeraghty/maintenance-plugins) to support skill improvement and PR review reporting workflows:plugins/pr-description&evals/pr-description):plugins/pr-description(skills/pr-description/SKILL.md) andevals/pr-description/skills/pr-description/{eval.yaml,grader.mjs}staged alongside the other 5 installed marketplace skills (add-plugin,try-plugin-locally,submit-plugin,update-remote-pins,release-plugins).evals/_shared/fixtures/pr-description/(SKILL.verbose-fixture.md,baseline-results.jsonl,candidate-results.jsonl) demonstrating both fixing a quality failure and trimming skill verbosity (-52.6%tokens at parity)..github/scripts/eval-report.mjs):npm run eval:reportandnpm run eval:compare -- --baseline ... --candidate ...to summarize per-case and aggregate scores, input/output/total tokens, durations, and baseline-vs-candidate transitions (Fixed,Regressed,Reduced tokens at parity).Validation
npm run lint: Passed (6 skills linted, 7 eval specs valid, local catalog matches manifests)node --test .github/scripts/*.test.mjs: Passed (551/551)