Repository navigation
Description
Problem
Nothing measures whether agents load the right skill, skip the wrong one, or follow the skill once it loads. CI checks skill metadata against the spec (validate-spec in .github/workflows/ci.yaml) but never checks triggering. The two evals/evals.json files (vendored gitops-knowledge and gitops-cluster-debug) grade output quality, not activation.
What spike #642 measured on the Claude host (7 days to 2026-11-04, 374 sessions plus 354 subagent transcripts):
- 127 native
Skillinvocations. 123 were the run-procedure skill, and none were domain skills likegolang-pro,github-actions-hardeningorgitops-knowledge. - Over the same window, at least 34 sessions edited Go, 23 edited workflow files and 11 edited Kubernetes manifests.
- The runtime's skill listing showed 30 of 94 skills by name only, with no description. Ten of those were agentic-engineering skills (for example
test-driven-development,secret-scanningandways-of-working).
The zero is not proof of harm. Without a matched no-skill baseline, nobody can tell an unneeded skill from a missed one.
Proposal
Add an offline suite for claude plugin eval, the native Claude Code harness (checked on 2.1.317). It runs each case with and without the plugin and grades tool_used: Skill as a plugin-fired signal, separate from the score. Start report-only with about 8 to 12 cases from the #642 protocol:
- positive cases;
- near-miss negative cases (for example live-cluster debugging versus repository audit, and Actions cost versus Actions security);
- an over-trigger guard (a trivial question should load no skill);
- adherence cases graded by deterministic file or trace checks (test before implementation, explicit-path staging, the fixed self-review heading);
- the product-context scenarios from Spike: evaluate product and customer context in engineering agent decisions #643 (scope creep, needless infrastructure, outcome tracking).
Run the suite on the agent host, on the existing monthly plugin-usefulness review in docs/plugin-effectiveness.md, with --no-publish. Keep results outside Git, as that doc already requires. Use only included subscription inference: no API keys and no paid judge.
Acceptance criteria
- A suite under the plugin's eval directory with at least 8 cases covering positive, near-miss negative, over-trigger and adherence behaviour. Each case is repeated at least 3 times.
- One recorded baseline run per case: activation recall, false-activation rate, adherence pass rate and the with/without score difference. The results stay in the private review record.
- Any skill whose recall misses the target is fixed at the root cause (description wording, duplicate shadowing, or listing budget), then re-measured.
- Docs change only by extending
docs/plugin-effectiveness.md, with no new doc file (Spike: Improve first-pass agent implementation quality through reuse of established solutions #647). - Regression thresholds become blocking only after two baselines agree.
Related: #642 (protocol), #637 (domain coverage), #641 (its evaluation requirement can reuse this harness), #646 (feedback loops), #625 (scorecard).
🤖 Generated with Claude Code
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Start date
Target date
Effort
Projects
- StatusShow more project fields📥 Backlog
Activity
coderabbitai commentedon Nov 4, 2026
🔗 Related PRs
#625 - feat(plugins): measure use and usefulness from native evidence [closed]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
devantler commentedon Nov 10, 2026
Activation cases to add to this suite: Svelte (from #652)
svelte-core-bestpracticeshas been bundled since 7.0.0. The suite has not landed yet, so these are the cases #652 asks for, ready to copy in:svelte-core-bestpracticespackage.jsondeclares Svelte 5svelte-checkpassesOne change from #652's wording: the near-miss case there expected the
astroskill to load. That skill left the bundle in 7.0.0, so the case can only assert that no Svelte skill loads.🤖 Generated with Claude Code
devantler commentedon Nov 10, 2026
Activation cases to add to this suite: PostgreSQL (from #653)
Updated 2026-11-10: no PostgreSQL skill is bundled. The candidate evaluated under #653 was not adopted, because the review of its pull request found defects in its row-level-security and migration examples. The cases below now describe what a future PostgreSQL skill must pass before it is adopted.
EXPLAIN) before changing anything and proposes an index, not a blind rewriteThe row-level-security case is new. It is the check the rejected candidate would have failed.
🤖 Generated with Claude Code
devantler commentedon Nov 10, 2026
Activation cases to add to this suite: Prometheus (from #654)
promqlandprometheusare prepared for adoption under #654. The suite has not landed yet, so these are the cases #654 asks for, ready to copy in:promqlorprometheus. Adherence: the rule usesrate()over a range, guards against division by zero, and has afor:durationcontext7documentation server) and does not point the pipeline at a hosted servicegitops-cluster-debug, notpromqlTwo changes from #654's wording, both following from the evaluation recorded there:
promqlowns the query andprometheusowns the rule file with itsfor:duration, so a correct run may load one or both.opentelemetryskill was rejected.🤖 Generated with Claude Code
devantler commentedon Nov 10, 2026
One requirement handed over from #678. The authoring rules say each first-party skill keeps its acceptance scenarios where a suite can read them. The CI check built for #678 (#681) deliberately leaves that out, because this issue decides where scenarios live.
When the suite lands, please add the missing check here: every first-party skill has at least two scenarios in the suite's location, and CI fails when one has none. The check from #681 already lists the first-party skills (18 today), so the scenario check can reuse that list.
🤖 Generated with Claude Code