chore(evals): author skill evals for discovery + memory-health (5 skills)#123
Conversation
…lls)
Rich-form evals/evals.json for discovery/{explore,explore-deep,research,
research-deep} and claude-config-audit/memory-health. Each ships 6 cases
spanning trigger/routing, happy path, a refusal/guardrail, and a must-not-do
anti-pattern, with objectively-verifiable expectations. Variant skills exercise
their distinctive contracts (fork isolation + read-only boundary for
explore-deep; multi-topic dispatch + tier selection for research-deep).
Minor version bump on both touched plugins (0.1.0 -> 0.2.0) — evals are a
shipped component and a version bump is the only delivery vehicle.
All five validated against plugins/skill-quality/reference/evals.schema.json
(check-jsonschema) and pass check-skill.sh.
Refs melodic-software/medley#1448
Bugbot couldn't run - usage limit reachedBugbot 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_7ec41b11-3c36-4038-976b-f96d462d9898) |
|
Claude finished @kyle-sexton's task in 3m 18s —— View job PR Review — chore(evals): author skill evals for discovery + memory-health
SummaryThis PR adds 30 eval cases across five skills. The structure is schema-compliant, version bumps are appropriate, and the variant skills test their distinctive behavioral contracts rather than duplicating the parent. The expectations are objectively verifiable behavioral tests — not subjective quality checks — which is the right form. I verified all cases against their live Two medium issues (missing expectations that leave SKILL.md contracts untested) and two minor issues (a weakened hedge, a name collision) follow. Medium — missing expectation coverageM1: The
This is a meaningful behavioral contract (the scan content depends on the disclosed starting point), but no expectation in the case verifies that the skill asks this intake question before scanning. The current four expectations test the card format, the improved-prompt assembly, and the no-EXPLORE.md default — the intake gate is unguarded. Suggested additional expectation: "Output asks the user one intake question about their starting point before or at the start of the scan"
M2:
Only two expectations are present (vs. three in every other case across all five files), which is how the gap surfaced. Suggested third expectation: "Output continues exploring the rest of the config dimension normally despite gating the deleted-file archaeology"
Minorm1:
The Suggested: drop the parenthetical and assert
m2: duplicate
Verified correct
The two medium items are worth fixing before merge — both leave documented SKILL.md contracts with no verifiable expectation, which is the main thing evals exist to catch. The minor items are optional-but-clean. Overall a well-authored batch with tight alignment to the live skill specs. |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot 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_8290412d-f69b-467b-bb01-ff42d5136a40) |
|
Claude finished @kyle-sexton's task in 3m 8s —— View job PR Review — chore(evals): author skill evals for discovery + memory-health
Summary30 eval cases across five skills. Schema is valid (all files pass the Two medium issues (SKILL.md-documented contracts without a covering expectation) and three minor issues (two hedge wordings that weaken write-contract assertions, one name collision) follow. Medium — undercovered behavioral contractsM1 —
The Suggested addition: "Output asks the user one intake question about their starting point before beginning the scan"
M2 —
Suggested addition: "Output continues exploring the rest of the config dimension normally despite gating the deleted-file archaeology"
Minorm1 —
Suggest dropping the parenthetical and asserting the file was written.
m2 —
m3 — duplicate Both carry
Verified correct
The two medium items (M1, M2) leave SKILL.md-specified behavioral gates uncovered and are worth fixing before merge. The three minor items (m1, m2, m3) are lower priority but clean up contract precision and tooling ergonomics. The overall batch is well-structured and tightly aligned with the live skill specs. |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot 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_c392539a-9ecb-402b-a9a9-65bf332578a4) |
|
Claude finished @kyle-sexton's task in 3m 53s —— View job PR Review — chore(evals): author skill evals for discovery + memory-health
Summary30 eval cases across five skills. Schema is valid ( Two medium issues leave documented SKILL.md behavioral contracts with no covering expectation. Three minor issues weaken assertion precision and create a name collision risk. Medium — uncovered SKILL.md contractsM1 —
The Suggested addition: "Output asks the user one intake question about their starting point before beginning the blindspot scan"
M2 —
Suggested addition: "Output continues exploring the rest of the config dimension normally despite gating the deleted-file archaeology"
Minorm1 —
m2 —
m3 — duplicate Both carry
Verified correct
M1 and M2 are worth fixing before merge — both leave SKILL.md-specified behavioral gates uncovered, which is the main thing evals exist to catch. The minor items (m1, m2, m3) are lower priority but tighten contract precision and reduce tooling friction. |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot 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_5a9ddc0a-a237-4de7-b05f-a7ed2b45e24a) |
|
Claude finished @kyle-sexton's task in 2m 2s —— View job PR Review — chore(evals): author skill evals for discovery + memory-health
ContextThis PR synchronize is a merge-of-main commit ( Medium — undercovered SKILL.md contracts (unchanged from prior review)M1 —
The Suggested addition to "Output asks the user one intake question about their starting point before beginning the blindspot scan"M2 —
Suggested third expectation for "Output continues exploring the rest of the config dimension normally despite gating the deleted-file archaeology"Minorm1 —
m2 —
m3 — duplicate Both carry
Verified correct
M1 and M2 are the priority — both leave documented SKILL.md behavioral contracts with no verifiable expectation, which is what evals exist to catch. M1 (intake gate) and M2 (continuation after gating) are one expectation each. The minor items (m1, m2, m3) are lower-priority but tighten contract precision and avoid tooling collisions. |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot 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_fdad5a7f-e4de-40db-a0d4-ddbf97c2f96f) |
|
Claude finished @kyle-sexton's task in 2m 11s —— View job PR Review — chore(evals): author skill evals for discovery + memory-health
ContextThe latest push ( Medium — undercovered SKILL.md contracts (still open)M1 —
The Suggested addition to "Output asks the user one intake question about their starting point before beginning the blindspot scan"M2 — The Suggested third expectation for "Output continues exploring the rest of the config dimension normally despite gating the deleted-file archaeology"Minor (still open)m1 —
Suggested fix: drop m2 —
m3 — duplicate Both carry
Verified correct
M1 and M2 are the priority — both leave SKILL.md-specified behavioral gates with no verifiable expectation, which is what evals exist to catch. Each is a one-line addition. The minor items (m1, m2, m3) are lower-priority but tighten contract precision and avoid tooling collisions. |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b23a8991cd
ℹ️ 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".
Bugbot couldn't run - usage limit reachedBugbot 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_0e7465fe-c2c8-42a0-9038-37bb720c9c28) |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Base main advanced to discovery@0.2.0 (PR #111) while this PR was open, so the eval files added here no longer shipped with a version bump relative to base. Bump to 0.3.0 so consumers receive the new eval assets on marketplace update. Addresses Codex review finding.
Bugbot couldn't run - usage limit reachedBugbot 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_18bc2589-6909-4f27-b20a-1b2b7bb7b8a9) |
|
Fixed in edd90ce — bumped |
There was a problem hiding this comment.
Stale comment
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot 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_b75cb9ea-6a5b-494d-91fd-1a6a281cdad2) |
|
Claude finished @kyle-sexton's task in 2m 27s —— View job PR Review — chore(evals): author skill evals for discovery + memory-health
Summary30 eval cases across five skills. Schema is valid, the version bump issue (discovery The five issues from prior reviews are all still open — the eval files are unchanged from the original commit. Two medium issues leave SKILL.md-documented behavioral gates with no covering expectation; three minor issues weaken assertion precision and create a name collision. Medium — undercovered SKILL.md contractsM1 —
The Suggested addition to "Output asks the user one intake question about their starting point before beginning the blindspot scan"M2 — The Suggested third expectation for "Output continues exploring the rest of the config dimension normally despite gating the deleted-file archaeology"Minorm1 —
m2 —
m3 — duplicate Both carry
Verified correct
M1 and M2 are the priority fixes — both leave SKILL.md-specified behavioral gates with no verifiable expectation, each requiring one line. The minor items (m1–m3) are lower priority but tighten contract precision and avoid tooling collisions. The overall batch is well-structured; these are targeted gaps in otherwise solid eval authorship. |
There was a problem hiding this comment.
Risk: low. Did not approve because Cursor Bugbot completed with skip status (usage limit reached), so the required automated review did not complete. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
## What
A new `comment-residue` skill in the **code-tidying** plugin: a
read-only classifier that flags **out-of-context residue** in code
comments and presents Tier 1/2 findings for author-applied deletion.
Mirrors `declutter`'s architecture (`detect.sh` + sourceable shape
library + self-contained `detect.test.sh`), but scans code files and
detects only on the **comment portion** of a line.
**Residue shapes:** `history-narration` ("used to… now…"),
`plan-reference` ("Task 2 replaces the old…", "in this PR"),
`conversational-antecedent` ("per your request") — all Tier 1;
`ticket-pr-residue` ("see PR #45", "JIRA-123") — Tier 2. `TODO(#issue)`
is the sanctioned back-reference and is never flagged.
Bumps code-tidying `0.2.0 → 0.3.0`; documents the skill in the manifest
+ README catalog.
## Why
Agents leak the producing conversation/plan/history into comments — text
that only makes sense inside the chat thread that wrote it. No existing
skill targets this: `declutter` is markdown-only, `compress` excludes
code comments, and `tidy`'s Beck-#15 handles generic restatement, not
the out-of-context residue class. This is the clean-up-afterward
companion to the source-side comment rule (a separate dotfiles-repo
change).
## Design notes
- **Comment-scoped detection** — residue-shaped words in identifiers or
string literals (`previously = load_cache()`, `# encode as UTF-8 /
SHA-256`) are **not** flagged; only the comment text is classified. This
keeps false positives low; anything uncertain lands in Tier 2 (review),
and the skill is read-only so the author confirms every deletion.
- **Placement** — filed under `code-tidying` (subject = code) per the
plan. It's a read-only *classifier* like `declutter` (which lives in
`docs-hygiene`), so a mode-based argument for `docs-hygiene` exists;
flagging for reviewer preference.
## Security review (plugin-acceptance)
Touches **only surface 1** — a read-only, advisory `detect.sh` (spawns
git/find/awk, never mutates, no network, no MCP server, no
`userConfig`/secrets, reads only files under the invoking repo via
`${CLAUDE_PLUGIN_ROOT}` / `git rev-parse`). No surface 2/5/6 trust
decision required.
## Test plan
- [x] `detect.test.sh` — 19/19 (shapes, tiers, opt-out, markdown-skip,
dir + paths-file, and the false-positive guards: code identifier,
`UTF-8`/`SHA-256`, sanctioned `TODO(#123)`)
- [x] shellcheck clean
- [x] shfmt clean (editorconfig-aware)
- [x] markdownlint-cli2 clean (repo config)
- [x] `claude plugin validate --strict .` passed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Read-only local bash/git scanning with no mutations, secrets, or
network; CI change is a targeted hygiene exclude for test/detector
content.
>
> **Overview**
> Adds **`/code-tidying:comment-residue`**, a read-only skill that
audits **code** comments for four residue shapes (history narration,
plan/session refs, conversational antecedents, ticket/PR back-refs) and
reports **Tier 1/2** findings with treatment guidance—authors apply
deletions; no edits from the skill.
>
> Implementation follows the `declutter`-style split: **`detect.sh`**
(targets, git default, deterministic output),
**`lib/comment-shapes.sh`** (comment-only extraction with string-aware
leaders, shape regexes, sanctioned `TODO(#issue)`,
`comment-residue-ignore`), plus **`detect.test.sh`**, eval fixtures, and
**`evals.json`**. **code-tidying** bumps to **0.3.0**; README and
manifest copy describe comment hygiene alongside `tidy` /
`batch-simplify`.
>
> CI **comment-hygiene** now **excludes** `comment-residue` **scripts**
and **evals** so intentional TODO/PR-shaped test corpus and detector
patterns do not trip the repo ban policy.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
43f7bfa. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…npm-minor-patch group across 1 directory (#221) Bumps the npm-minor-patch group with 1 update in the / directory: [@anthropic-ai/claude-code](https://github.com/anthropics/claude-code). Updates `@anthropic-ai/claude-code` from 2.1.210 to 2.1.212 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/anthropics/claude-code/releases">@anthropic-ai/claude-code's releases</a>.</em></p> <blockquote> <h2>v2.1.212</h2> <h2>What's changed</h2> <ul> <li><code>/fork</code> now copies your conversation into a new background session (its own row in <code>claude agents</code>) while you keep working; the in-session subagent it used to launch is now <code>/subtask</code></li> <li>Added <code>claude auto-mode reset</code> to restore the default auto-mode configuration, with a confirmation prompt (pass <code>--yes</code> to skip)</li> <li>Added a session-wide limit on WebSearch tool calls (default 200, tunable via <code>CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION</code>) to stop runaway search loops</li> <li>Added a per-session cap on subagent spawns (default 200, override with <code>CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION</code>) to stop runaway delegation loops; <code>/clear</code> resets the budget</li> <li>MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with <code>CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS</code></li> <li>Typing <code>/resume</code> in the agent view now opens a picker of past sessions — including sessions deleted from the list — and resumes your pick as a background session</li> <li>Fixed plan mode auto-running file-modifying Bash commands (e.g. <code>touch</code>, <code>rm</code>) without a permission prompt or SDK <code>canUseTool</code> callback</li> <li>Fixed worktree creation following a repository-committed symlink at <code>.claude/worktrees</code>, which could create files outside the repository</li> <li>Fixed a <code>continue:false</code> hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections</li> <li>Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143</li> <li>Fixed <code>/background</code> and <code>claude --bg</code> failing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7</li> <li>Fixed shell mode (<code>!</code>) not executing commands containing file paths while the path autocomplete popup was open</li> <li>Fixed auto-mode denial notifications rendering broken characters when a long denial reason was truncated mid-emoji</li> <li>Fixed Ctrl+J not inserting a newline in the agent view dispatch input on terminals with extended key reporting, and surfaced the newline shortcut in the <code>?</code> help overlay</li> <li>Fixed <code>/ultrareview</code> rejecting PR references like <code>[#123](https://github.com/anthropics/claude-code/issues/123)</code>, <code>PR 123</code>, and pasted PR URLs; error hints now name the command you actually typed</li> <li>Fixed <code>/ultrareview <branch></code> not fetching the branch from origin when it exists remotely; it now suggests the closest branch name on typos</li> <li>Fixed <code>/ultrareview</code> skipping the billing confirmation in a new conversation after <code>/clear</code></li> <li>Fixed <code>/ultrareview</code>'s "not a git repository" error on Claude Desktop now suggesting the project's repository folder instead of terminal commands</li> <li>Fixed hosted (host-managed) sessions failing at startup when repository settings configured mTLS certs, extra CA bundles, or OAuth scopes; these transport settings are now ignored with a warning</li> <li>Fixed a spurious "File has not been read yet" error when editing a file that had been read with offset/limit before resuming a session</li> <li>Fixed <code>ExitWorktree</code> failing with "no active EnterWorktree session" after resuming a session with <code>--continue</code>/<code>--resume</code> in print/SDK mode</li> <li>Fixed the workflow agent grid staying empty for Remote Control clients that join a session mid-run</li> <li>Fixed streaming-mode control requests being marked complete before their handler finished, which could lose the request on session restart</li> <li>Fixed background sessions created with <code>/fork</code> losing their live-parent protection after a state write failure</li> <li>Fixed reopening a stopped background session from the agent view failing silently — it now resumes the session, or shows why it can't and lets you force a restart</li> <li>Fixed agent teams: a stopping teammate could send the leader duplicate idle notifications when team initialization re-ran within a session</li> <li>Fixed the plan-approval dialog footer splitting "ctrl+g to edit in <!-- raw HTML omitted -->" apart when the file path is long</li> <li>Fixed the welcome banner keeping its old panel widths after a combined width+height terminal resize in fullscreen mode</li> <li>Fixed diff previews losing their line numbers and +/- markers in narrow layouts</li> <li>Fixed @-mentions attaching nothing after a partial file read, plugin uninstall targeting the wrong marketplace, and false "Command timed out" on exit code 143</li> <li>Fixed OpenTelemetry HTTP exports being rejected with 411/400 by Azure Monitor and other endpoints that don't accept chunked transfer encoding</li> <li>Fixed OTLP event log records missing <code>trace_id</code>/<code>span_id</code> when <code>TRACEPARENT</code> is set in SDK/headless mode</li> <li>Fixed conversations with many images incorrectly failing with "Request too large" errors, and improved the error message to explain the actual cause</li> <li>Fixed web search and web fetch returning "API Error" text as search results or page content when the API was overloaded</li> <li>Improved web search and web fetch reliability by retrying 529 errors and rate-limited requests with bounded backoff</li> <li>Improved prompt caching: the mid-conversation system block now works behind LLM gateways and custom base URLs (Bedrock, Vertex, 1P)</li> <li>Improved background agent attach: cold-attaching now instantly shows the formatted transcript while the session boots, instead of a blank wait</li> <li>Reduced token usage in inter-agent messaging: <code>SendMessage</code> bodies are no longer duplicated into replayed history and tool results</li> <li>Changed <code>/fork</code> to name the copy after your prompt when the session has no title, so the row is recognizable in the agent view</li> <li>Changed bare <code>/btw</code> to reopen the side-question panel on your most recent exchange so you can browse earlier answers</li> <li>Changed the <code>←</code> footer hint to pulse <code>N done</code> for a moment when a background agent finishes while nothing needs your input</li> <li>Deprecated the Task tool's <code>mode</code> parameter (now ignored); subagents inherit the parent session's permission mode by default</li> <li>Changed Enterprise <code>forceLoginMethod</code> to be enforced for VS Code extension, SDK, <code>setup-token</code>, and <code>install-github-app</code> logins, not just the terminal</li> <li>Changed session transcripts to record the reasoning effort level on each assistant message</li> <li>Changed headless/SDK sessions to apply a <code>set_model</code> control request mid-turn; the next model round-trip uses the new model instead of waiting for the next turn</li> <li>Changed agent view / <code>claude agents --json</code>: sessions waiting on a sandbox, MCP-input, or managed-settings prompt now show as "Needs input" instead of "Working"</li> <li>Updated the auth status panel title from "Cloud authentication" to "Authentication"</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md">@anthropic-ai/claude-code's changelog</a>.</em></p> <blockquote> <h2>2.1.212</h2> <ul> <li><code>/fork</code> now copies your conversation into a new background session (its own row in <code>claude agents</code>) while you keep working; the in-session subagent it used to launch is now <code>/subtask</code></li> <li>Added <code>claude auto-mode reset</code> to restore the default auto-mode configuration, with a confirmation prompt (pass <code>--yes</code> to skip)</li> <li>Added a session-wide limit on WebSearch tool calls (default 200, tunable via <code>CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION</code>) to stop runaway search loops</li> <li>Added a per-session cap on subagent spawns (default 200, override with <code>CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION</code>) to stop runaway delegation loops; <code>/clear</code> resets the budget</li> <li>MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with <code>CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS</code></li> <li>Typing <code>/resume</code> in the agent view now opens a picker of past sessions — including sessions deleted from the list — and resumes your pick as a background session</li> <li>Fixed plan mode auto-running file-modifying Bash commands (e.g. <code>touch</code>, <code>rm</code>) without a permission prompt or SDK <code>canUseTool</code> callback</li> <li>Fixed worktree creation following a repository-committed symlink at <code>.claude/worktrees</code>, which could create files outside the repository</li> <li>Fixed a <code>continue:false</code> hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections</li> <li>Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143</li> <li>Fixed <code>/background</code> and <code>claude --bg</code> failing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7</li> <li>Fixed shell mode (<code>!</code>) not executing commands containing file paths while the path autocomplete popup was open</li> <li>Fixed auto-mode denial notifications rendering broken characters when a long denial reason was truncated mid-emoji</li> <li>Fixed Ctrl+J not inserting a newline in the agent view dispatch input on terminals with extended key reporting, and surfaced the newline shortcut in the <code>?</code> help overlay</li> <li>Fixed <code>/ultrareview</code> rejecting PR references like <code>[#123](https://github.com/anthropics/claude-code/issues/123)</code>, <code>PR 123</code>, and pasted PR URLs; error hints now name the command you actually typed</li> <li>Fixed <code>/ultrareview <branch></code> not fetching the branch from origin when it exists remotely; it now suggests the closest branch name on typos</li> <li>Fixed <code>/ultrareview</code> skipping the billing confirmation in a new conversation after <code>/clear</code></li> <li>Fixed <code>/ultrareview</code>'s "not a git repository" error on Claude Desktop now suggesting the project's repository folder instead of terminal commands</li> <li>Fixed hosted (host-managed) sessions failing at startup when repository settings configured mTLS certs, extra CA bundles, or OAuth scopes; these transport settings are now ignored with a warning</li> <li>Fixed a spurious "File has not been read yet" error when editing a file that had been read with offset/limit before resuming a session</li> <li>Fixed <code>ExitWorktree</code> failing with "no active EnterWorktree session" after resuming a session with <code>--continue</code>/<code>--resume</code> in print/SDK mode</li> <li>Fixed the workflow agent grid staying empty for Remote Control clients that join a session mid-run</li> <li>Fixed streaming-mode control requests being marked complete before their handler finished, which could lose the request on session restart</li> <li>Fixed background sessions created with <code>/fork</code> losing their live-parent protection after a state write failure</li> <li>Fixed reopening a stopped background session from the agent view failing silently — it now resumes the session, or shows why it can't and lets you force a restart</li> <li>Fixed agent teams: a stopping teammate could send the leader duplicate idle notifications when team initialization re-ran within a session</li> <li>Fixed the plan-approval dialog footer splitting "ctrl+g to edit in <!-- raw HTML omitted -->" apart when the file path is long</li> <li>Fixed the welcome banner keeping its old panel widths after a combined width+height terminal resize in fullscreen mode</li> <li>Fixed diff previews losing their line numbers and +/- markers in narrow layouts</li> <li>Fixed @-mentions attaching nothing after a partial file read, plugin uninstall targeting the wrong marketplace, and false "Command timed out" on exit code 143</li> <li>Fixed OpenTelemetry HTTP exports being rejected with 411/400 by Azure Monitor and other endpoints that don't accept chunked transfer encoding</li> <li>Fixed OTLP event log records missing <code>trace_id</code>/<code>span_id</code> when <code>TRACEPARENT</code> is set in SDK/headless mode</li> <li>Fixed conversations with many images incorrectly failing with "Request too large" errors, and improved the error message to explain the actual cause</li> <li>Fixed web search and web fetch returning "API Error" text as search results or page content when the API was overloaded</li> <li>Improved web search and web fetch reliability by retrying 529 errors and rate-limited requests with bounded backoff</li> <li>Improved prompt caching: the mid-conversation system block now works behind LLM gateways and custom base URLs (Bedrock, Vertex, 1P)</li> <li>Improved background agent attach: cold-attaching now instantly shows the formatted transcript while the session boots, instead of a blank wait</li> <li>Reduced token usage in inter-agent messaging: <code>SendMessage</code> bodies are no longer duplicated into replayed history and tool results</li> <li>Changed <code>/fork</code> to name the copy after your prompt when the session has no title, so the row is recognizable in the agent view</li> <li>Changed bare <code>/btw</code> to reopen the side-question panel on your most recent exchange so you can browse earlier answers</li> <li>Changed the <code>←</code> footer hint to pulse <code>N done</code> for a moment when a background agent finishes while nothing needs your input</li> <li>Deprecated the Task tool's <code>mode</code> parameter (now ignored); subagents inherit the parent session's permission mode by default</li> <li>Changed Enterprise <code>forceLoginMethod</code> to be enforced for VS Code extension, SDK, <code>setup-token</code>, and <code>install-github-app</code> logins, not just the terminal</li> <li>Changed session transcripts to record the reasoning effort level on each assistant message</li> <li>Changed headless/SDK sessions to apply a <code>set_model</code> control request mid-turn; the next model round-trip uses the new model instead of waiting for the next turn</li> <li>Changed agent view / <code>claude agents --json</code>: sessions waiting on a sandbox, MCP-input, or managed-settings prompt now show as "Needs input" instead of "Working"</li> <li>Updated the auth status panel title from "Cloud authentication" to "Authentication"</li> <li>Corrected an earlier release note (2.1.200): tmux through the 3.6 series lacks synchronized output; newer tmux with support is detected automatically</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/anthropics/claude-code/commit/67f390c9a0b1440d369aebe2ff6a5023db35bf8e"><code>67f390c</code></a> chore: Update CHANGELOG.md and feed.xml</li> <li><a href="https://github.com/anthropics/claude-code/commit/c39cb0f14bfe8bb519bae5bfc55add6867c5e2ab"><code>c39cb0f</code></a> chore: Update CHANGELOG.md and feed.xml</li> <li>See full diff in <a href="https://github.com/anthropics/claude-code/compare/v2.1.210...v2.1.212">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>



What
Author rich-form
evals/evals.jsonfor five judgment-bearing skills, one file per skill underplugins/<plugin>/skills/<skill>/evals/. Each ships 6 cases covering trigger/routing, the happy path, at least one refusal/guardrail, and at least one must-not-do anti-pattern, with objectively-verifiableexpectations.discovery/explorediscovery/explore-deepdiscovery/researchdiscovery/research-deepclaude-config-audit/memory-healthVariant skills exercise their distinctive contract rather than re-testing the parent:
CLAUDE_CODE_FORK_SUBAGENTunset, empty-scope handling, sidecar when EXPLORE.md exists.Per-skill warrant verdicts (re-checked against live SKILL.md)
No skill in this batch was pure-reference; no skip verdicts.
Version bumps
Both touched plugins bumped
0.1.0→0.2.0(minor — evals are an additive shipped component; a version bump is the only delivery vehicle). Matches the precedent of a minor bump for adding a new shipped component (implementation plugin → v0.2.0 for a setup skill, #100).Validation
check-jsonschemaagainstplugins/skill-quality/reference/evals.schema.json.check-skill.sh(0 errors); no evals-missing WARN, confirming presence is detected. Residual WARNs are pre-existing skill-body items (Gotchas surface /Use when:phrasing), out of scope for this evals-authoring task.Note on stale issue-body references
The claimed issue body cites two paths that do not exist on
main:docs/MIGRATION-PLAYBOOK.md"Evals — warrant policy and consumer-verify recipe" anddocs/evals-coverage.md. The warrant guidance actually lives inplugins/skill-quality/skills/skill-quality/SKILL.md(validate-evals action) — used as the warrant authority here. Flagging for tracker hygiene; not a blocker.Refs melodic-software/medley#1448
Note
Low Risk
Additive eval JSON and minor plugin version bumps only; no changes to skill runtime logic or application code paths.
Overview
Adds rich-form
evals/evals.json(six cases each, withprompt,expected_output, and verifiableexpectations) for five judgment-bearing skills: discoveryexplore,explore-deep,research,research-deep, and claude-config-auditmemory-health.The new cases encode each skill’s behavioral contract—happy paths, scope/routing, guardrails (read-only, no auto-fix, no training-recall claims), and variant-specific rules (e.g. fork isolation and sidecar artifacts for
explore-deep; dispatcher tiering and parallel topic agents forresearch-deep; contributor-local reports and fix gating formemory-health).Plugin versions are bumped as the delivery vehicle for the new shipped eval assets:
claude-config-audit0.1.0 → 0.2.0,discovery0.2.0 → 0.3.0.Reviewed by Cursor Bugbot for commit 9406015. Bugbot is set up for automated code reviews on this repo. Configure here.